Peerkartosh Multiverse
peerversewiki
https://peerverse.miraheze.org/wiki/Main_Page
MediaWiki 1.42.1
first-letter
Media
Special
Talk
User
User talk
Peerkartosh Multiverse
Peerkartosh Multiverse talk
File
File talk
MediaWiki
MediaWiki talk
Template
Template talk
Help
Help talk
Category
Category talk
Module
Module talk
Template:Template link
10
29
52
2022-09-30T01:10:00Z
dev>Pppery
0
46 revisions imported from [[:wikipedia:Template:Template_link]]
wikitext
text/x-wiki
{{[[Template:{{{1}}}|{{{1}}}]]}}<noinclude>{{documentation}}
<!-- Categories go on the /doc subpage and interwikis go on Wikidata. -->
</noinclude>
eabbec62efe3044a98ebb3ce9e7d4d43c222351d
53
52
2024-08-06T06:37:05Z
Peerkartosh
2
1 revision imported from [[:dev:Template:Template_link]]
wikitext
text/x-wiki
{{[[Template:{{{1}}}|{{{1}}}]]}}<noinclude>{{documentation}}
<!-- Categories go on the /doc subpage and interwikis go on Wikidata. -->
</noinclude>
eabbec62efe3044a98ebb3ce9e7d4d43c222351d
Module:Arguments
828
23
40
2022-09-30T02:32:01Z
dev>Pppery
0
24 revisions imported from [[:wikipedia:Module:Arguments]]
Scribunto
text/plain
-- This module provides easy processing of arguments passed to Scribunto from
-- #invoke. It is intended for use by other Lua modules, and should not be
-- called from #invoke directly.
local libraryUtil = require('libraryUtil')
local checkType = libraryUtil.checkType
local arguments = {}
-- Generate four different tidyVal functions, so that we don't have to check the
-- options every time we call it.
local function tidyValDefault(key, val)
if type(val) == 'string' then
val = val:match('^%s*(.-)%s*$')
if val == '' then
return nil
else
return val
end
else
return val
end
end
local function tidyValTrimOnly(key, val)
if type(val) == 'string' then
return val:match('^%s*(.-)%s*$')
else
return val
end
end
local function tidyValRemoveBlanksOnly(key, val)
if type(val) == 'string' then
if val:find('%S') then
return val
else
return nil
end
else
return val
end
end
local function tidyValNoChange(key, val)
return val
end
local function matchesTitle(given, title)
local tp = type( given )
return (tp == 'string' or tp == 'number') and mw.title.new( given ).prefixedText == title
end
local translate_mt = { __index = function(t, k) return k end }
function arguments.getArgs(frame, options)
checkType('getArgs', 1, frame, 'table', true)
checkType('getArgs', 2, options, 'table', true)
frame = frame or {}
options = options or {}
--[[
-- Set up argument translation.
--]]
options.translate = options.translate or {}
if getmetatable(options.translate) == nil then
setmetatable(options.translate, translate_mt)
end
if options.backtranslate == nil then
options.backtranslate = {}
for k,v in pairs(options.translate) do
options.backtranslate[v] = k
end
end
if options.backtranslate and getmetatable(options.backtranslate) == nil then
setmetatable(options.backtranslate, {
__index = function(t, k)
if options.translate[k] ~= k then
return nil
else
return k
end
end
})
end
--[[
-- Get the argument tables. If we were passed a valid frame object, get the
-- frame arguments (fargs) and the parent frame arguments (pargs), depending
-- on the options set and on the parent frame's availability. If we weren't
-- passed a valid frame object, we are being called from another Lua module
-- or from the debug console, so assume that we were passed a table of args
-- directly, and assign it to a new variable (luaArgs).
--]]
local fargs, pargs, luaArgs
if type(frame.args) == 'table' and type(frame.getParent) == 'function' then
if options.wrappers then
--[[
-- The wrappers option makes Module:Arguments look up arguments in
-- either the frame argument table or the parent argument table, but
-- not both. This means that users can use either the #invoke syntax
-- or a wrapper template without the loss of performance associated
-- with looking arguments up in both the frame and the parent frame.
-- Module:Arguments will look up arguments in the parent frame
-- if it finds the parent frame's title in options.wrapper;
-- otherwise it will look up arguments in the frame object passed
-- to getArgs.
--]]
local parent = frame:getParent()
if not parent then
fargs = frame.args
else
local title = parent:getTitle():gsub('/sandbox$', '')
local found = false
if matchesTitle(options.wrappers, title) then
found = true
elseif type(options.wrappers) == 'table' then
for _,v in pairs(options.wrappers) do
if matchesTitle(v, title) then
found = true
break
end
end
end
-- We test for false specifically here so that nil (the default) acts like true.
if found or options.frameOnly == false then
pargs = parent.args
end
if not found or options.parentOnly == false then
fargs = frame.args
end
end
else
-- options.wrapper isn't set, so check the other options.
if not options.parentOnly then
fargs = frame.args
end
if not options.frameOnly then
local parent = frame:getParent()
pargs = parent and parent.args or nil
end
end
if options.parentFirst then
fargs, pargs = pargs, fargs
end
else
luaArgs = frame
end
-- Set the order of precedence of the argument tables. If the variables are
-- nil, nothing will be added to the table, which is how we avoid clashes
-- between the frame/parent args and the Lua args.
local argTables = {fargs}
argTables[#argTables + 1] = pargs
argTables[#argTables + 1] = luaArgs
--[[
-- Generate the tidyVal function. If it has been specified by the user, we
-- use that; if not, we choose one of four functions depending on the
-- options chosen. This is so that we don't have to call the options table
-- every time the function is called.
--]]
local tidyVal = options.valueFunc
if tidyVal then
if type(tidyVal) ~= 'function' then
error(
"bad value assigned to option 'valueFunc'"
.. '(function expected, got '
.. type(tidyVal)
.. ')',
2
)
end
elseif options.trim ~= false then
if options.removeBlanks ~= false then
tidyVal = tidyValDefault
else
tidyVal = tidyValTrimOnly
end
else
if options.removeBlanks ~= false then
tidyVal = tidyValRemoveBlanksOnly
else
tidyVal = tidyValNoChange
end
end
--[[
-- Set up the args, metaArgs and nilArgs tables. args will be the one
-- accessed from functions, and metaArgs will hold the actual arguments. Nil
-- arguments are memoized in nilArgs, and the metatable connects all of them
-- together.
--]]
local args, metaArgs, nilArgs, metatable = {}, {}, {}, {}
setmetatable(args, metatable)
local function mergeArgs(tables)
--[[
-- Accepts multiple tables as input and merges their keys and values
-- into one table. If a value is already present it is not overwritten;
-- tables listed earlier have precedence. We are also memoizing nil
-- values, which can be overwritten if they are 's' (soft).
--]]
for _, t in ipairs(tables) do
for key, val in pairs(t) do
if metaArgs[key] == nil and nilArgs[key] ~= 'h' then
local tidiedVal = tidyVal(key, val)
if tidiedVal == nil then
nilArgs[key] = 's'
else
metaArgs[key] = tidiedVal
end
end
end
end
end
--[[
-- Define metatable behaviour. Arguments are memoized in the metaArgs table,
-- and are only fetched from the argument tables once. Fetching arguments
-- from the argument tables is the most resource-intensive step in this
-- module, so we try and avoid it where possible. For this reason, nil
-- arguments are also memoized, in the nilArgs table. Also, we keep a record
-- in the metatable of when pairs and ipairs have been called, so we do not
-- run pairs and ipairs on the argument tables more than once. We also do
-- not run ipairs on fargs and pargs if pairs has already been run, as all
-- the arguments will already have been copied over.
--]]
metatable.__index = function (t, key)
--[[
-- Fetches an argument when the args table is indexed. First we check
-- to see if the value is memoized, and if not we try and fetch it from
-- the argument tables. When we check memoization, we need to check
-- metaArgs before nilArgs, as both can be non-nil at the same time.
-- If the argument is not present in metaArgs, we also check whether
-- pairs has been run yet. If pairs has already been run, we return nil.
-- This is because all the arguments will have already been copied into
-- metaArgs by the mergeArgs function, meaning that any other arguments
-- must be nil.
--]]
if type(key) == 'string' then
key = options.translate[key]
end
local val = metaArgs[key]
if val ~= nil then
return val
elseif metatable.donePairs or nilArgs[key] then
return nil
end
for _, argTable in ipairs(argTables) do
local argTableVal = tidyVal(key, argTable[key])
if argTableVal ~= nil then
metaArgs[key] = argTableVal
return argTableVal
end
end
nilArgs[key] = 'h'
return nil
end
metatable.__newindex = function (t, key, val)
-- This function is called when a module tries to add a new value to the
-- args table, or tries to change an existing value.
if type(key) == 'string' then
key = options.translate[key]
end
if options.readOnly then
error(
'could not write to argument table key "'
.. tostring(key)
.. '"; the table is read-only',
2
)
elseif options.noOverwrite and args[key] ~= nil then
error(
'could not write to argument table key "'
.. tostring(key)
.. '"; overwriting existing arguments is not permitted',
2
)
elseif val == nil then
--[[
-- If the argument is to be overwritten with nil, we need to erase
-- the value in metaArgs, so that __index, __pairs and __ipairs do
-- not use a previous existing value, if present; and we also need
-- to memoize the nil in nilArgs, so that the value isn't looked
-- up in the argument tables if it is accessed again.
--]]
metaArgs[key] = nil
nilArgs[key] = 'h'
else
metaArgs[key] = val
end
end
local function translatenext(invariant)
local k, v = next(invariant.t, invariant.k)
invariant.k = k
if k == nil then
return nil
elseif type(k) ~= 'string' or not options.backtranslate then
return k, v
else
local backtranslate = options.backtranslate[k]
if backtranslate == nil then
-- Skip this one. This is a tail call, so this won't cause stack overflow
return translatenext(invariant)
else
return backtranslate, v
end
end
end
metatable.__pairs = function ()
-- Called when pairs is run on the args table.
if not metatable.donePairs then
mergeArgs(argTables)
metatable.donePairs = true
end
return translatenext, { t = metaArgs }
end
local function inext(t, i)
-- This uses our __index metamethod
local v = t[i + 1]
if v ~= nil then
return i + 1, v
end
end
metatable.__ipairs = function (t)
-- Called when ipairs is run on the args table.
return inext, t, 0
end
return args
end
return arguments
3134ecce8429b810d445e29eae115e2ae4c36c53
41
40
2024-08-06T06:32:12Z
Peerkartosh
2
1 revision imported from [[:dev:Module:Arguments]]
Scribunto
text/plain
-- This module provides easy processing of arguments passed to Scribunto from
-- #invoke. It is intended for use by other Lua modules, and should not be
-- called from #invoke directly.
local libraryUtil = require('libraryUtil')
local checkType = libraryUtil.checkType
local arguments = {}
-- Generate four different tidyVal functions, so that we don't have to check the
-- options every time we call it.
local function tidyValDefault(key, val)
if type(val) == 'string' then
val = val:match('^%s*(.-)%s*$')
if val == '' then
return nil
else
return val
end
else
return val
end
end
local function tidyValTrimOnly(key, val)
if type(val) == 'string' then
return val:match('^%s*(.-)%s*$')
else
return val
end
end
local function tidyValRemoveBlanksOnly(key, val)
if type(val) == 'string' then
if val:find('%S') then
return val
else
return nil
end
else
return val
end
end
local function tidyValNoChange(key, val)
return val
end
local function matchesTitle(given, title)
local tp = type( given )
return (tp == 'string' or tp == 'number') and mw.title.new( given ).prefixedText == title
end
local translate_mt = { __index = function(t, k) return k end }
function arguments.getArgs(frame, options)
checkType('getArgs', 1, frame, 'table', true)
checkType('getArgs', 2, options, 'table', true)
frame = frame or {}
options = options or {}
--[[
-- Set up argument translation.
--]]
options.translate = options.translate or {}
if getmetatable(options.translate) == nil then
setmetatable(options.translate, translate_mt)
end
if options.backtranslate == nil then
options.backtranslate = {}
for k,v in pairs(options.translate) do
options.backtranslate[v] = k
end
end
if options.backtranslate and getmetatable(options.backtranslate) == nil then
setmetatable(options.backtranslate, {
__index = function(t, k)
if options.translate[k] ~= k then
return nil
else
return k
end
end
})
end
--[[
-- Get the argument tables. If we were passed a valid frame object, get the
-- frame arguments (fargs) and the parent frame arguments (pargs), depending
-- on the options set and on the parent frame's availability. If we weren't
-- passed a valid frame object, we are being called from another Lua module
-- or from the debug console, so assume that we were passed a table of args
-- directly, and assign it to a new variable (luaArgs).
--]]
local fargs, pargs, luaArgs
if type(frame.args) == 'table' and type(frame.getParent) == 'function' then
if options.wrappers then
--[[
-- The wrappers option makes Module:Arguments look up arguments in
-- either the frame argument table or the parent argument table, but
-- not both. This means that users can use either the #invoke syntax
-- or a wrapper template without the loss of performance associated
-- with looking arguments up in both the frame and the parent frame.
-- Module:Arguments will look up arguments in the parent frame
-- if it finds the parent frame's title in options.wrapper;
-- otherwise it will look up arguments in the frame object passed
-- to getArgs.
--]]
local parent = frame:getParent()
if not parent then
fargs = frame.args
else
local title = parent:getTitle():gsub('/sandbox$', '')
local found = false
if matchesTitle(options.wrappers, title) then
found = true
elseif type(options.wrappers) == 'table' then
for _,v in pairs(options.wrappers) do
if matchesTitle(v, title) then
found = true
break
end
end
end
-- We test for false specifically here so that nil (the default) acts like true.
if found or options.frameOnly == false then
pargs = parent.args
end
if not found or options.parentOnly == false then
fargs = frame.args
end
end
else
-- options.wrapper isn't set, so check the other options.
if not options.parentOnly then
fargs = frame.args
end
if not options.frameOnly then
local parent = frame:getParent()
pargs = parent and parent.args or nil
end
end
if options.parentFirst then
fargs, pargs = pargs, fargs
end
else
luaArgs = frame
end
-- Set the order of precedence of the argument tables. If the variables are
-- nil, nothing will be added to the table, which is how we avoid clashes
-- between the frame/parent args and the Lua args.
local argTables = {fargs}
argTables[#argTables + 1] = pargs
argTables[#argTables + 1] = luaArgs
--[[
-- Generate the tidyVal function. If it has been specified by the user, we
-- use that; if not, we choose one of four functions depending on the
-- options chosen. This is so that we don't have to call the options table
-- every time the function is called.
--]]
local tidyVal = options.valueFunc
if tidyVal then
if type(tidyVal) ~= 'function' then
error(
"bad value assigned to option 'valueFunc'"
.. '(function expected, got '
.. type(tidyVal)
.. ')',
2
)
end
elseif options.trim ~= false then
if options.removeBlanks ~= false then
tidyVal = tidyValDefault
else
tidyVal = tidyValTrimOnly
end
else
if options.removeBlanks ~= false then
tidyVal = tidyValRemoveBlanksOnly
else
tidyVal = tidyValNoChange
end
end
--[[
-- Set up the args, metaArgs and nilArgs tables. args will be the one
-- accessed from functions, and metaArgs will hold the actual arguments. Nil
-- arguments are memoized in nilArgs, and the metatable connects all of them
-- together.
--]]
local args, metaArgs, nilArgs, metatable = {}, {}, {}, {}
setmetatable(args, metatable)
local function mergeArgs(tables)
--[[
-- Accepts multiple tables as input and merges their keys and values
-- into one table. If a value is already present it is not overwritten;
-- tables listed earlier have precedence. We are also memoizing nil
-- values, which can be overwritten if they are 's' (soft).
--]]
for _, t in ipairs(tables) do
for key, val in pairs(t) do
if metaArgs[key] == nil and nilArgs[key] ~= 'h' then
local tidiedVal = tidyVal(key, val)
if tidiedVal == nil then
nilArgs[key] = 's'
else
metaArgs[key] = tidiedVal
end
end
end
end
end
--[[
-- Define metatable behaviour. Arguments are memoized in the metaArgs table,
-- and are only fetched from the argument tables once. Fetching arguments
-- from the argument tables is the most resource-intensive step in this
-- module, so we try and avoid it where possible. For this reason, nil
-- arguments are also memoized, in the nilArgs table. Also, we keep a record
-- in the metatable of when pairs and ipairs have been called, so we do not
-- run pairs and ipairs on the argument tables more than once. We also do
-- not run ipairs on fargs and pargs if pairs has already been run, as all
-- the arguments will already have been copied over.
--]]
metatable.__index = function (t, key)
--[[
-- Fetches an argument when the args table is indexed. First we check
-- to see if the value is memoized, and if not we try and fetch it from
-- the argument tables. When we check memoization, we need to check
-- metaArgs before nilArgs, as both can be non-nil at the same time.
-- If the argument is not present in metaArgs, we also check whether
-- pairs has been run yet. If pairs has already been run, we return nil.
-- This is because all the arguments will have already been copied into
-- metaArgs by the mergeArgs function, meaning that any other arguments
-- must be nil.
--]]
if type(key) == 'string' then
key = options.translate[key]
end
local val = metaArgs[key]
if val ~= nil then
return val
elseif metatable.donePairs or nilArgs[key] then
return nil
end
for _, argTable in ipairs(argTables) do
local argTableVal = tidyVal(key, argTable[key])
if argTableVal ~= nil then
metaArgs[key] = argTableVal
return argTableVal
end
end
nilArgs[key] = 'h'
return nil
end
metatable.__newindex = function (t, key, val)
-- This function is called when a module tries to add a new value to the
-- args table, or tries to change an existing value.
if type(key) == 'string' then
key = options.translate[key]
end
if options.readOnly then
error(
'could not write to argument table key "'
.. tostring(key)
.. '"; the table is read-only',
2
)
elseif options.noOverwrite and args[key] ~= nil then
error(
'could not write to argument table key "'
.. tostring(key)
.. '"; overwriting existing arguments is not permitted',
2
)
elseif val == nil then
--[[
-- If the argument is to be overwritten with nil, we need to erase
-- the value in metaArgs, so that __index, __pairs and __ipairs do
-- not use a previous existing value, if present; and we also need
-- to memoize the nil in nilArgs, so that the value isn't looked
-- up in the argument tables if it is accessed again.
--]]
metaArgs[key] = nil
nilArgs[key] = 'h'
else
metaArgs[key] = val
end
end
local function translatenext(invariant)
local k, v = next(invariant.t, invariant.k)
invariant.k = k
if k == nil then
return nil
elseif type(k) ~= 'string' or not options.backtranslate then
return k, v
else
local backtranslate = options.backtranslate[k]
if backtranslate == nil then
-- Skip this one. This is a tail call, so this won't cause stack overflow
return translatenext(invariant)
else
return backtranslate, v
end
end
end
metatable.__pairs = function ()
-- Called when pairs is run on the args table.
if not metatable.donePairs then
mergeArgs(argTables)
metatable.donePairs = true
end
return translatenext, { t = metaArgs }
end
local function inext(t, i)
-- This uses our __index metamethod
local v = t[i + 1]
if v ~= nil then
return i + 1, v
end
end
metatable.__ipairs = function (t)
-- Called when ipairs is run on the args table.
return inext, t, 0
end
return args
end
return arguments
3134ecce8429b810d445e29eae115e2ae4c36c53
Module:Documentation/config
828
25
44
2022-10-01T17:37:53Z
dev>Pppery
0
Pppery moved page [[Module:Documentation/config/2]] to [[Module:Documentation/config]] without leaving a redirect
Scribunto
text/plain
----------------------------------------------------------------------------------------------------
--
-- Configuration for Module:Documentation
--
-- Here you can set the values of the parameters and messages used in Module:Documentation to
-- localise it to your wiki and your language. Unless specified otherwise, values given here
-- should be string values.
----------------------------------------------------------------------------------------------------
local cfg = {} -- Do not edit this line.
----------------------------------------------------------------------------------------------------
-- Start box configuration
----------------------------------------------------------------------------------------------------
-- cfg['documentation-icon-wikitext']
-- The wikitext for the icon shown at the top of the template.
cfg['documentation-icon-wikitext'] = '[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=]]'
-- cfg['template-namespace-heading']
-- The heading shown in the template namespace.
cfg['template-namespace-heading'] = 'Template documentation'
-- cfg['module-namespace-heading']
-- The heading shown in the module namespace.
cfg['module-namespace-heading'] = 'Module documentation'
-- cfg['file-namespace-heading']
-- The heading shown in the file namespace.
cfg['file-namespace-heading'] = 'Summary'
-- cfg['other-namespaces-heading']
-- The heading shown in other namespaces.
cfg['other-namespaces-heading'] = 'Documentation'
-- cfg['view-link-display']
-- The text to display for "view" links.
cfg['view-link-display'] = 'view'
-- cfg['edit-link-display']
-- The text to display for "edit" links.
cfg['edit-link-display'] = 'edit'
-- cfg['history-link-display']
-- The text to display for "history" links.
cfg['history-link-display'] = 'history'
-- cfg['purge-link-display']
-- The text to display for "purge" links.
cfg['purge-link-display'] = 'purge'
-- cfg['create-link-display']
-- The text to display for "create" links.
cfg['create-link-display'] = 'create'
----------------------------------------------------------------------------------------------------
-- Link box (end box) configuration
----------------------------------------------------------------------------------------------------
-- cfg['transcluded-from-blurb']
-- Notice displayed when the docs are transcluded from another page. $1 is a wikilink to that page.
cfg['transcluded-from-blurb'] = 'The above [[w:Wikipedia:Template documentation|documentation]] is [[mw:Help:Transclusion|transcluded]] from $1.'
--[[
-- cfg['create-module-doc-blurb']
-- Notice displayed in the module namespace when the documentation subpage does not exist.
-- $1 is a link to create the documentation page with the preload cfg['module-preload'] and the
-- display cfg['create-link-display'].
--]]
cfg['create-module-doc-blurb'] = 'You might want to $1 a documentation page for this [[mw:Extension:Scribunto/Lua reference manual|Scribunto module]].'
----------------------------------------------------------------------------------------------------
-- Experiment blurb configuration
----------------------------------------------------------------------------------------------------
--[[
-- cfg['experiment-blurb-template']
-- cfg['experiment-blurb-module']
-- The experiment blurb is the text inviting editors to experiment in sandbox and test cases pages.
-- It is only shown in the template and module namespaces. With the default English settings, it
-- might look like this:
--
-- Editors can experiment in this template's sandbox (edit | diff) and testcases (edit) pages.
--
-- In this example, "sandbox", "edit", "diff", "testcases", and "edit" would all be links.
--
-- There are two versions, cfg['experiment-blurb-template'] and cfg['experiment-blurb-module'], depending
-- on what namespace we are in.
--
-- Parameters:
--
-- $1 is a link to the sandbox page. If the sandbox exists, it is in the following format:
--
-- cfg['sandbox-link-display'] (cfg['sandbox-edit-link-display'] | cfg['compare-link-display'])
--
-- If the sandbox doesn't exist, it is in the format:
--
-- cfg['sandbox-link-display'] (cfg['sandbox-create-link-display'] | cfg['mirror-link-display'])
--
-- The link for cfg['sandbox-create-link-display'] link preloads the page with cfg['template-sandbox-preload']
-- or cfg['module-sandbox-preload'], depending on the current namespace. The link for cfg['mirror-link-display']
-- loads a default edit summary of cfg['mirror-edit-summary'].
--
-- $2 is a link to the test cases page. If the test cases page exists, it is in the following format:
--
-- cfg['testcases-link-display'] (cfg['testcases-edit-link-display'] | cfg['testcases-run-link-display'])
--
-- If the test cases page doesn't exist, it is in the format:
--
-- cfg['testcases-link-display'] (cfg['testcases-create-link-display'])
--
-- If the test cases page doesn't exist, the link for cfg['testcases-create-link-display'] preloads the
-- page with cfg['template-testcases-preload'] or cfg['module-testcases-preload'], depending on the current
-- namespace.
--]]
cfg['experiment-blurb-template'] = "Editors can experiment in this template's $1 and $2 pages."
cfg['experiment-blurb-module'] = "Editors can experiment in this module's $1 and $2 pages."
----------------------------------------------------------------------------------------------------
-- Sandbox link configuration
----------------------------------------------------------------------------------------------------
-- cfg['sandbox-subpage']
-- The name of the template subpage typically used for sandboxes.
cfg['sandbox-subpage'] = 'sandbox'
-- cfg['template-sandbox-preload']
-- Preload file for template sandbox pages.
cfg['template-sandbox-preload'] = 'Template:Documentation/preload-sandbox'
-- cfg['module-sandbox-preload']
-- Preload file for Lua module sandbox pages.
cfg['module-sandbox-preload'] = 'Template:Documentation/preload-module-sandbox'
-- cfg['sandbox-link-display']
-- The text to display for "sandbox" links.
cfg['sandbox-link-display'] = 'sandbox'
-- cfg['sandbox-edit-link-display']
-- The text to display for sandbox "edit" links.
cfg['sandbox-edit-link-display'] = 'edit'
-- cfg['sandbox-create-link-display']
-- The text to display for sandbox "create" links.
cfg['sandbox-create-link-display'] = 'create'
-- cfg['compare-link-display']
-- The text to display for "compare" links.
cfg['compare-link-display'] = 'diff'
-- cfg['mirror-edit-summary']
-- The default edit summary to use when a user clicks the "mirror" link. $1 is a wikilink to the
-- template page.
cfg['mirror-edit-summary'] = 'Create sandbox version of $1'
-- cfg['mirror-link-display']
-- The text to display for "mirror" links.
cfg['mirror-link-display'] = 'mirror'
-- cfg['mirror-link-preload']
-- The page to preload when a user clicks the "mirror" link.
cfg['mirror-link-preload'] = 'Template:Documentation/mirror'
----------------------------------------------------------------------------------------------------
-- Test cases link configuration
----------------------------------------------------------------------------------------------------
-- cfg['testcases-subpage']
-- The name of the template subpage typically used for test cases.
cfg['testcases-subpage'] = 'testcases'
-- cfg['template-testcases-preload']
-- Preload file for template test cases pages.
cfg['template-testcases-preload'] = 'Template:Documentation/preload-testcases'
-- cfg['module-testcases-preload']
-- Preload file for Lua module test cases pages.
cfg['module-testcases-preload'] = 'Template:Documentation/preload-module-testcases'
-- cfg['testcases-link-display']
-- The text to display for "testcases" links.
cfg['testcases-link-display'] = 'testcases'
-- cfg['testcases-edit-link-display']
-- The text to display for test cases "edit" links.
cfg['testcases-edit-link-display'] = 'edit'
-- cfg['testcases-run-link-display']
-- The text to display for test cases "run" links.
cfg['testcases-run-link-display'] = 'run'
-- cfg['testcases-create-link-display']
-- The text to display for test cases "create" links.
cfg['testcases-create-link-display'] = 'create'
----------------------------------------------------------------------------------------------------
-- Add categories blurb configuration
----------------------------------------------------------------------------------------------------
--[[
-- cfg['add-categories-blurb']
-- Text to direct users to add categories to the /doc subpage. Not used if the "content" or
-- "docname fed" arguments are set, as then it is not clear where to add the categories. $1 is a
-- link to the /doc subpage with a display value of cfg['doc-link-display'].
--]]
cfg['add-categories-blurb'] = 'Add categories to the $1 subpage.'
-- cfg['doc-link-display']
-- The text to display when linking to the /doc subpage.
cfg['doc-link-display'] = '/doc'
----------------------------------------------------------------------------------------------------
-- Subpages link configuration
----------------------------------------------------------------------------------------------------
--[[
-- cfg['subpages-blurb']
-- The "Subpages of this template" blurb. $1 is a link to the main template's subpages with a
-- display value of cfg['subpages-link-display']. In the English version this blurb is simply
-- the link followed by a period, and the link display provides the actual text.
--]]
cfg['subpages-blurb'] = '$1.'
--[[
-- cfg['subpages-link-display']
-- The text to display for the "subpages of this page" link. $1 is cfg['template-pagetype'],
-- cfg['module-pagetype'] or cfg['default-pagetype'], depending on whether the current page is in
-- the template namespace, the module namespace, or another namespace.
--]]
cfg['subpages-link-display'] = 'Subpages of this $1'
-- cfg['template-pagetype']
-- The pagetype to display for template pages.
cfg['template-pagetype'] = 'template'
-- cfg['module-pagetype']
-- The pagetype to display for Lua module pages.
cfg['module-pagetype'] = 'module'
-- cfg['default-pagetype']
-- The pagetype to display for pages other than templates or Lua modules.
cfg['default-pagetype'] = 'page'
----------------------------------------------------------------------------------------------------
-- Doc link configuration
----------------------------------------------------------------------------------------------------
-- cfg['doc-subpage']
-- The name of the subpage typically used for documentation pages.
cfg['doc-subpage'] = 'doc'
-- cfg['docpage-preload']
-- Preload file for template documentation pages in all namespaces.
cfg['docpage-preload'] = 'Template:Documentation/preload'
-- cfg['module-preload']
-- Preload file for Lua module documentation pages.
cfg['module-preload'] = 'Template:Documentation/preload-module-doc'
----------------------------------------------------------------------------------------------------
-- HTML and CSS configuration
----------------------------------------------------------------------------------------------------
-- cfg['templatestyles']
-- The name of the TemplateStyles page where CSS is kept.
-- Sandbox CSS will be at Module:Documentation/sandbox/styles.css when needed.
cfg['templatestyles'] = 'Module:Documentation/styles.css'
-- cfg['container']
-- Class which can be used to set flex or grid CSS on the
-- two child divs documentation and documentation-metadata
cfg['container'] = 'documentation-container'
-- cfg['main-div-classes']
-- Classes added to the main HTML "div" tag.
cfg['main-div-classes'] = 'documentation'
-- cfg['main-div-heading-class']
-- Class for the main heading for templates and modules and assoc. talk spaces
cfg['main-div-heading-class'] = 'documentation-heading'
-- cfg['start-box-class']
-- Class for the start box
cfg['start-box-class'] = 'documentation-startbox'
-- cfg['start-box-link-classes']
-- Classes used for the [view][edit][history] or [create] links in the start box.
-- mw-editsection-like is per [[Wikipedia:Village pump (technical)/Archive 117]]
cfg['start-box-link-classes'] = 'mw-editsection-like plainlinks'
-- cfg['end-box-class']
-- Class for the end box.
cfg['end-box-class'] = 'documentation-metadata'
-- cfg['end-box-plainlinks']
-- Plainlinks
cfg['end-box-plainlinks'] = 'plainlinks'
-- cfg['toolbar-class']
-- Class added for toolbar links.
cfg['toolbar-class'] = 'documentation-toolbar'
-- cfg['clear']
-- Just used to clear things.
cfg['clear'] = 'documentation-clear'
----------------------------------------------------------------------------------------------------
-- Tracking category configuration
----------------------------------------------------------------------------------------------------
-- cfg['display-strange-usage-category']
-- Set to true to enable output of cfg['strange-usage-category'] if the module is used on a /doc subpage
-- or a /testcases subpage. This should be a boolean value (either true or false).
cfg['display-strange-usage-category'] = true
-- cfg['strange-usage-category']
-- Category to output if cfg['display-strange-usage-category'] is set to true and the module is used on a
-- /doc subpage or a /testcases subpage.
cfg['strange-usage-category'] = 'Wikipedia pages with strange ((documentation)) usage'
--[[
----------------------------------------------------------------------------------------------------
-- End configuration
--
-- Don't edit anything below this line.
----------------------------------------------------------------------------------------------------
--]]
return cfg
d70e8b1402a2bbe08a1fef4b75d743e661af0c95
45
44
2024-08-06T06:33:03Z
Peerkartosh
2
1 revision imported from [[:dev:Module:Documentation/config]]
Scribunto
text/plain
----------------------------------------------------------------------------------------------------
--
-- Configuration for Module:Documentation
--
-- Here you can set the values of the parameters and messages used in Module:Documentation to
-- localise it to your wiki and your language. Unless specified otherwise, values given here
-- should be string values.
----------------------------------------------------------------------------------------------------
local cfg = {} -- Do not edit this line.
----------------------------------------------------------------------------------------------------
-- Start box configuration
----------------------------------------------------------------------------------------------------
-- cfg['documentation-icon-wikitext']
-- The wikitext for the icon shown at the top of the template.
cfg['documentation-icon-wikitext'] = '[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=]]'
-- cfg['template-namespace-heading']
-- The heading shown in the template namespace.
cfg['template-namespace-heading'] = 'Template documentation'
-- cfg['module-namespace-heading']
-- The heading shown in the module namespace.
cfg['module-namespace-heading'] = 'Module documentation'
-- cfg['file-namespace-heading']
-- The heading shown in the file namespace.
cfg['file-namespace-heading'] = 'Summary'
-- cfg['other-namespaces-heading']
-- The heading shown in other namespaces.
cfg['other-namespaces-heading'] = 'Documentation'
-- cfg['view-link-display']
-- The text to display for "view" links.
cfg['view-link-display'] = 'view'
-- cfg['edit-link-display']
-- The text to display for "edit" links.
cfg['edit-link-display'] = 'edit'
-- cfg['history-link-display']
-- The text to display for "history" links.
cfg['history-link-display'] = 'history'
-- cfg['purge-link-display']
-- The text to display for "purge" links.
cfg['purge-link-display'] = 'purge'
-- cfg['create-link-display']
-- The text to display for "create" links.
cfg['create-link-display'] = 'create'
----------------------------------------------------------------------------------------------------
-- Link box (end box) configuration
----------------------------------------------------------------------------------------------------
-- cfg['transcluded-from-blurb']
-- Notice displayed when the docs are transcluded from another page. $1 is a wikilink to that page.
cfg['transcluded-from-blurb'] = 'The above [[w:Wikipedia:Template documentation|documentation]] is [[mw:Help:Transclusion|transcluded]] from $1.'
--[[
-- cfg['create-module-doc-blurb']
-- Notice displayed in the module namespace when the documentation subpage does not exist.
-- $1 is a link to create the documentation page with the preload cfg['module-preload'] and the
-- display cfg['create-link-display'].
--]]
cfg['create-module-doc-blurb'] = 'You might want to $1 a documentation page for this [[mw:Extension:Scribunto/Lua reference manual|Scribunto module]].'
----------------------------------------------------------------------------------------------------
-- Experiment blurb configuration
----------------------------------------------------------------------------------------------------
--[[
-- cfg['experiment-blurb-template']
-- cfg['experiment-blurb-module']
-- The experiment blurb is the text inviting editors to experiment in sandbox and test cases pages.
-- It is only shown in the template and module namespaces. With the default English settings, it
-- might look like this:
--
-- Editors can experiment in this template's sandbox (edit | diff) and testcases (edit) pages.
--
-- In this example, "sandbox", "edit", "diff", "testcases", and "edit" would all be links.
--
-- There are two versions, cfg['experiment-blurb-template'] and cfg['experiment-blurb-module'], depending
-- on what namespace we are in.
--
-- Parameters:
--
-- $1 is a link to the sandbox page. If the sandbox exists, it is in the following format:
--
-- cfg['sandbox-link-display'] (cfg['sandbox-edit-link-display'] | cfg['compare-link-display'])
--
-- If the sandbox doesn't exist, it is in the format:
--
-- cfg['sandbox-link-display'] (cfg['sandbox-create-link-display'] | cfg['mirror-link-display'])
--
-- The link for cfg['sandbox-create-link-display'] link preloads the page with cfg['template-sandbox-preload']
-- or cfg['module-sandbox-preload'], depending on the current namespace. The link for cfg['mirror-link-display']
-- loads a default edit summary of cfg['mirror-edit-summary'].
--
-- $2 is a link to the test cases page. If the test cases page exists, it is in the following format:
--
-- cfg['testcases-link-display'] (cfg['testcases-edit-link-display'] | cfg['testcases-run-link-display'])
--
-- If the test cases page doesn't exist, it is in the format:
--
-- cfg['testcases-link-display'] (cfg['testcases-create-link-display'])
--
-- If the test cases page doesn't exist, the link for cfg['testcases-create-link-display'] preloads the
-- page with cfg['template-testcases-preload'] or cfg['module-testcases-preload'], depending on the current
-- namespace.
--]]
cfg['experiment-blurb-template'] = "Editors can experiment in this template's $1 and $2 pages."
cfg['experiment-blurb-module'] = "Editors can experiment in this module's $1 and $2 pages."
----------------------------------------------------------------------------------------------------
-- Sandbox link configuration
----------------------------------------------------------------------------------------------------
-- cfg['sandbox-subpage']
-- The name of the template subpage typically used for sandboxes.
cfg['sandbox-subpage'] = 'sandbox'
-- cfg['template-sandbox-preload']
-- Preload file for template sandbox pages.
cfg['template-sandbox-preload'] = 'Template:Documentation/preload-sandbox'
-- cfg['module-sandbox-preload']
-- Preload file for Lua module sandbox pages.
cfg['module-sandbox-preload'] = 'Template:Documentation/preload-module-sandbox'
-- cfg['sandbox-link-display']
-- The text to display for "sandbox" links.
cfg['sandbox-link-display'] = 'sandbox'
-- cfg['sandbox-edit-link-display']
-- The text to display for sandbox "edit" links.
cfg['sandbox-edit-link-display'] = 'edit'
-- cfg['sandbox-create-link-display']
-- The text to display for sandbox "create" links.
cfg['sandbox-create-link-display'] = 'create'
-- cfg['compare-link-display']
-- The text to display for "compare" links.
cfg['compare-link-display'] = 'diff'
-- cfg['mirror-edit-summary']
-- The default edit summary to use when a user clicks the "mirror" link. $1 is a wikilink to the
-- template page.
cfg['mirror-edit-summary'] = 'Create sandbox version of $1'
-- cfg['mirror-link-display']
-- The text to display for "mirror" links.
cfg['mirror-link-display'] = 'mirror'
-- cfg['mirror-link-preload']
-- The page to preload when a user clicks the "mirror" link.
cfg['mirror-link-preload'] = 'Template:Documentation/mirror'
----------------------------------------------------------------------------------------------------
-- Test cases link configuration
----------------------------------------------------------------------------------------------------
-- cfg['testcases-subpage']
-- The name of the template subpage typically used for test cases.
cfg['testcases-subpage'] = 'testcases'
-- cfg['template-testcases-preload']
-- Preload file for template test cases pages.
cfg['template-testcases-preload'] = 'Template:Documentation/preload-testcases'
-- cfg['module-testcases-preload']
-- Preload file for Lua module test cases pages.
cfg['module-testcases-preload'] = 'Template:Documentation/preload-module-testcases'
-- cfg['testcases-link-display']
-- The text to display for "testcases" links.
cfg['testcases-link-display'] = 'testcases'
-- cfg['testcases-edit-link-display']
-- The text to display for test cases "edit" links.
cfg['testcases-edit-link-display'] = 'edit'
-- cfg['testcases-run-link-display']
-- The text to display for test cases "run" links.
cfg['testcases-run-link-display'] = 'run'
-- cfg['testcases-create-link-display']
-- The text to display for test cases "create" links.
cfg['testcases-create-link-display'] = 'create'
----------------------------------------------------------------------------------------------------
-- Add categories blurb configuration
----------------------------------------------------------------------------------------------------
--[[
-- cfg['add-categories-blurb']
-- Text to direct users to add categories to the /doc subpage. Not used if the "content" or
-- "docname fed" arguments are set, as then it is not clear where to add the categories. $1 is a
-- link to the /doc subpage with a display value of cfg['doc-link-display'].
--]]
cfg['add-categories-blurb'] = 'Add categories to the $1 subpage.'
-- cfg['doc-link-display']
-- The text to display when linking to the /doc subpage.
cfg['doc-link-display'] = '/doc'
----------------------------------------------------------------------------------------------------
-- Subpages link configuration
----------------------------------------------------------------------------------------------------
--[[
-- cfg['subpages-blurb']
-- The "Subpages of this template" blurb. $1 is a link to the main template's subpages with a
-- display value of cfg['subpages-link-display']. In the English version this blurb is simply
-- the link followed by a period, and the link display provides the actual text.
--]]
cfg['subpages-blurb'] = '$1.'
--[[
-- cfg['subpages-link-display']
-- The text to display for the "subpages of this page" link. $1 is cfg['template-pagetype'],
-- cfg['module-pagetype'] or cfg['default-pagetype'], depending on whether the current page is in
-- the template namespace, the module namespace, or another namespace.
--]]
cfg['subpages-link-display'] = 'Subpages of this $1'
-- cfg['template-pagetype']
-- The pagetype to display for template pages.
cfg['template-pagetype'] = 'template'
-- cfg['module-pagetype']
-- The pagetype to display for Lua module pages.
cfg['module-pagetype'] = 'module'
-- cfg['default-pagetype']
-- The pagetype to display for pages other than templates or Lua modules.
cfg['default-pagetype'] = 'page'
----------------------------------------------------------------------------------------------------
-- Doc link configuration
----------------------------------------------------------------------------------------------------
-- cfg['doc-subpage']
-- The name of the subpage typically used for documentation pages.
cfg['doc-subpage'] = 'doc'
-- cfg['docpage-preload']
-- Preload file for template documentation pages in all namespaces.
cfg['docpage-preload'] = 'Template:Documentation/preload'
-- cfg['module-preload']
-- Preload file for Lua module documentation pages.
cfg['module-preload'] = 'Template:Documentation/preload-module-doc'
----------------------------------------------------------------------------------------------------
-- HTML and CSS configuration
----------------------------------------------------------------------------------------------------
-- cfg['templatestyles']
-- The name of the TemplateStyles page where CSS is kept.
-- Sandbox CSS will be at Module:Documentation/sandbox/styles.css when needed.
cfg['templatestyles'] = 'Module:Documentation/styles.css'
-- cfg['container']
-- Class which can be used to set flex or grid CSS on the
-- two child divs documentation and documentation-metadata
cfg['container'] = 'documentation-container'
-- cfg['main-div-classes']
-- Classes added to the main HTML "div" tag.
cfg['main-div-classes'] = 'documentation'
-- cfg['main-div-heading-class']
-- Class for the main heading for templates and modules and assoc. talk spaces
cfg['main-div-heading-class'] = 'documentation-heading'
-- cfg['start-box-class']
-- Class for the start box
cfg['start-box-class'] = 'documentation-startbox'
-- cfg['start-box-link-classes']
-- Classes used for the [view][edit][history] or [create] links in the start box.
-- mw-editsection-like is per [[Wikipedia:Village pump (technical)/Archive 117]]
cfg['start-box-link-classes'] = 'mw-editsection-like plainlinks'
-- cfg['end-box-class']
-- Class for the end box.
cfg['end-box-class'] = 'documentation-metadata'
-- cfg['end-box-plainlinks']
-- Plainlinks
cfg['end-box-plainlinks'] = 'plainlinks'
-- cfg['toolbar-class']
-- Class added for toolbar links.
cfg['toolbar-class'] = 'documentation-toolbar'
-- cfg['clear']
-- Just used to clear things.
cfg['clear'] = 'documentation-clear'
----------------------------------------------------------------------------------------------------
-- Tracking category configuration
----------------------------------------------------------------------------------------------------
-- cfg['display-strange-usage-category']
-- Set to true to enable output of cfg['strange-usage-category'] if the module is used on a /doc subpage
-- or a /testcases subpage. This should be a boolean value (either true or false).
cfg['display-strange-usage-category'] = true
-- cfg['strange-usage-category']
-- Category to output if cfg['display-strange-usage-category'] is set to true and the module is used on a
-- /doc subpage or a /testcases subpage.
cfg['strange-usage-category'] = 'Wikipedia pages with strange ((documentation)) usage'
--[[
----------------------------------------------------------------------------------------------------
-- End configuration
--
-- Don't edit anything below this line.
----------------------------------------------------------------------------------------------------
--]]
return cfg
d70e8b1402a2bbe08a1fef4b75d743e661af0c95
Template:Documentation subpage
10
33
61
2022-10-01T17:51:17Z
dev>Pppery
0
wikitext
text/x-wiki
<includeonly><!--
-->{{#ifeq:{{lc:{{SUBPAGENAME}}}} |{{{override|doc}}}
| <!--(this template has been transcluded on a /doc or /{{{override}}} page)-->
</includeonly><!--
-->{{#ifeq:{{{doc-notice|show}}} |show
| {{Mbox
| type = notice
| style = margin-bottom:1.0em;
| image = [[File:Edit-copy green.svg|40px|alt=|link=]]
| text =
'''This is a documentation subpage''' for '''{{{1|[[:{{SUBJECTSPACE}}:{{BASEPAGENAME}}]]}}}'''.<br/> It contains usage information, [[mw:Help:Categories|categories]] and other content that is not part of the original {{#if:{{{text2|}}} |{{{text2}}} |{{#if:{{{text1|}}} |{{{text1}}} | page}}}}.
}}
}}<!--
-->{{DEFAULTSORT:{{{defaultsort|{{PAGENAME}}}}}}}<!--
-->{{#if:{{{inhibit|}}} |<!--(don't categorize)-->
| <includeonly><!--
-->{{#ifexist:{{NAMESPACE}}:{{BASEPAGENAME}}
| [[Category:{{#switch:{{SUBJECTSPACE}} |Template=Template |Module=Module |User=User |#default=Wikipedia}} documentation pages]]
| [[Category:Documentation subpages without corresponding pages]]
}}<!--
--></includeonly>
}}<!--
(completing initial #ifeq: at start of template:)
--><includeonly>
| <!--(this template has not been transcluded on a /doc or /{{{override}}} page)-->
}}<!--
--></includeonly><noinclude>{{Documentation}}</noinclude>
471e685c1c643a5c6272e20e49824fffebad0448
62
61
2024-08-06T06:55:34Z
Peerkartosh
2
1 revision imported from [[:dev:Template:Documentation_subpage]]
wikitext
text/x-wiki
<includeonly><!--
-->{{#ifeq:{{lc:{{SUBPAGENAME}}}} |{{{override|doc}}}
| <!--(this template has been transcluded on a /doc or /{{{override}}} page)-->
</includeonly><!--
-->{{#ifeq:{{{doc-notice|show}}} |show
| {{Mbox
| type = notice
| style = margin-bottom:1.0em;
| image = [[File:Edit-copy green.svg|40px|alt=|link=]]
| text =
'''This is a documentation subpage''' for '''{{{1|[[:{{SUBJECTSPACE}}:{{BASEPAGENAME}}]]}}}'''.<br/> It contains usage information, [[mw:Help:Categories|categories]] and other content that is not part of the original {{#if:{{{text2|}}} |{{{text2}}} |{{#if:{{{text1|}}} |{{{text1}}} | page}}}}.
}}
}}<!--
-->{{DEFAULTSORT:{{{defaultsort|{{PAGENAME}}}}}}}<!--
-->{{#if:{{{inhibit|}}} |<!--(don't categorize)-->
| <includeonly><!--
-->{{#ifexist:{{NAMESPACE}}:{{BASEPAGENAME}}
| [[Category:{{#switch:{{SUBJECTSPACE}} |Template=Template |Module=Module |User=User |#default=Wikipedia}} documentation pages]]
| [[Category:Documentation subpages without corresponding pages]]
}}<!--
--></includeonly>
}}<!--
(completing initial #ifeq: at start of template:)
--><includeonly>
| <!--(this template has not been transcluded on a /doc or /{{{override}}} page)-->
}}<!--
--></includeonly><noinclude>{{Documentation}}</noinclude>
471e685c1c643a5c6272e20e49824fffebad0448
Template:Documentation subpage/doc
10
34
63
2022-10-05T21:17:56Z
dev>Pppery
0
Category'
wikitext
text/x-wiki
{{Documentation subpage}}
This template displays a message that the current page is a documentation subpage.
== Usage ==
: {{Template link expanded|Documentation subpage}}
: or
: {{Template link expanded|Documentation subpage |[[Page where the documentation [[mw:Help:Transclusion|transcluded]]]]}}
===Text customization===
The parameters |text1= and |text2= can be used to set the text of, respectively, the template's first and second lines. If ''text1'' is set but not ''text2'', both lines' text will derive from ''text1'':
With ''text1'' and ''text2'':
<code><nowiki>{{Documentation subpage |text1='''''text1 appears here''''' |text2='''''text2 appears here'''''}}</nowiki></code>
{{Documentation subpage |[''page''] |text1='''''text1 appears here''''' |text2='''''text2 appears here''''' |override={{lc:{{SUBPAGENAME}}<!-- Hack to allow example to appear, even when viewed from [[Template:Documentation subpage]] -->}}}}
With ''text2'' only:
<code><nowiki>{{Documentation subpage |text2='''''text2 appears here'''''}}</nowiki></code>
{{Documentation subpage |[''page''] |text2='''''text2 appears here''''' |override={{lc:{{SUBPAGENAME}}<!-- Hack to allow example to appear, even when viewed from [[Template:Documentation subpage]] -->}}}}
With ''text1'' only:
<code><nowiki>{{Documentation subpage |text1='''''text1 appears here'''''}}</nowiki></code>
{{Documentation subpage |[''page''] |text1='''''text1 appears here''''' |override={{lc:{{SUBPAGENAME}}<!-- Hack to allow example to appear, even when viewed from [[Template:Documentation subpage]] -->}}}}
===Other parameters===
|inhibit=yes will prevent this template from generating any categories. (By default, "''Namespace'' documentation pages" (usually [[:Category:Template documentation pages]]) is added, or [[:Category:Documentation subpages without corresponding pages]] if the main page doesn't exist.)
== Display ==
This template should normally be placed at the top of /doc pages. It changes output depending on where it is viewed:
* On a /doc page, it displays a box explaining template documentation and links to the template page.
* On other pages – i.e. pages transcluding the /doc page – the template will not show. The template page itself (which contains <code>{{Template link|Documentation}}</code>) will automatically note that the documentation is [[mw:Help:Transclusion|transcluded]] from a subpage.
== Functions ==
In addition to its message, the template adds pages to [[:Category:Template documentation pages]], [[:Category:User documentation pages]], or similar (named after the subject space), but only for documentation pages in namespaces with the subpage feature. It defaults the [[m:Help:Categories#Sort order|sort key]] to the page name without namespace: Template:Foo, for example, would be sorted as "Foo", i.e. under "F".
<includeonly>[[Category:Notice templates]]</includeonly>
8687a9dcbf0396916412a8a462f318fb8da1aed0
64
63
2024-08-06T06:55:45Z
Peerkartosh
2
1 revision imported from [[:dev:Template:Documentation_subpage/doc]]
wikitext
text/x-wiki
{{Documentation subpage}}
This template displays a message that the current page is a documentation subpage.
== Usage ==
: {{Template link expanded|Documentation subpage}}
: or
: {{Template link expanded|Documentation subpage |[[Page where the documentation [[mw:Help:Transclusion|transcluded]]]]}}
===Text customization===
The parameters |text1= and |text2= can be used to set the text of, respectively, the template's first and second lines. If ''text1'' is set but not ''text2'', both lines' text will derive from ''text1'':
With ''text1'' and ''text2'':
<code><nowiki>{{Documentation subpage |text1='''''text1 appears here''''' |text2='''''text2 appears here'''''}}</nowiki></code>
{{Documentation subpage |[''page''] |text1='''''text1 appears here''''' |text2='''''text2 appears here''''' |override={{lc:{{SUBPAGENAME}}<!-- Hack to allow example to appear, even when viewed from [[Template:Documentation subpage]] -->}}}}
With ''text2'' only:
<code><nowiki>{{Documentation subpage |text2='''''text2 appears here'''''}}</nowiki></code>
{{Documentation subpage |[''page''] |text2='''''text2 appears here''''' |override={{lc:{{SUBPAGENAME}}<!-- Hack to allow example to appear, even when viewed from [[Template:Documentation subpage]] -->}}}}
With ''text1'' only:
<code><nowiki>{{Documentation subpage |text1='''''text1 appears here'''''}}</nowiki></code>
{{Documentation subpage |[''page''] |text1='''''text1 appears here''''' |override={{lc:{{SUBPAGENAME}}<!-- Hack to allow example to appear, even when viewed from [[Template:Documentation subpage]] -->}}}}
===Other parameters===
|inhibit=yes will prevent this template from generating any categories. (By default, "''Namespace'' documentation pages" (usually [[:Category:Template documentation pages]]) is added, or [[:Category:Documentation subpages without corresponding pages]] if the main page doesn't exist.)
== Display ==
This template should normally be placed at the top of /doc pages. It changes output depending on where it is viewed:
* On a /doc page, it displays a box explaining template documentation and links to the template page.
* On other pages – i.e. pages transcluding the /doc page – the template will not show. The template page itself (which contains <code>{{Template link|Documentation}}</code>) will automatically note that the documentation is [[mw:Help:Transclusion|transcluded]] from a subpage.
== Functions ==
In addition to its message, the template adds pages to [[:Category:Template documentation pages]], [[:Category:User documentation pages]], or similar (named after the subject space), but only for documentation pages in namespaces with the subpage feature. It defaults the [[m:Help:Categories#Sort order|sort key]] to the page name without namespace: Template:Foo, for example, would be sorted as "Foo", i.e. under "F".
<includeonly>[[Category:Notice templates]]</includeonly>
8687a9dcbf0396916412a8a462f318fb8da1aed0
Template:Para
10
31
56
2022-10-21T19:52:33Z
dev>Pppery
0
wikitext
text/x-wiki
<code class="tpl-para" style="word-break:break-word;{{SAFESUBST:<noinclude />#if:{{{plain|}}}|border: none; background-color: inherit;}} {{SAFESUBST:<noinclude />#if:{{{style|}}}|{{{style}}}}}">|{{SAFESUBST:<noinclude />#if:{{{1|}}}|{{{1}}}=}}{{{2|}}}</code><noinclude>
{{Documentation}}
<!--Categories and interwikis go near the bottom of the /doc subpage.-->
</noinclude>
7be5bee75307eae9342bbb9ff3a613e93e93d5a7
57
56
2024-08-06T06:45:32Z
Peerkartosh
2
1 revision imported from [[:dev:Template:Para]]
wikitext
text/x-wiki
<code class="tpl-para" style="word-break:break-word;{{SAFESUBST:<noinclude />#if:{{{plain|}}}|border: none; background-color: inherit;}} {{SAFESUBST:<noinclude />#if:{{{style|}}}|{{{style}}}}}">|{{SAFESUBST:<noinclude />#if:{{{1|}}}|{{{1}}}=}}{{{2|}}}</code><noinclude>
{{Documentation}}
<!--Categories and interwikis go near the bottom of the /doc subpage.-->
</noinclude>
7be5bee75307eae9342bbb9ff3a613e93e93d5a7
Module:Message box/configuration
828
38
71
2022-10-21T22:38:02Z
dev>Pppery
0
Scribunto
text/plain
--------------------------------------------------------------------------------
-- Message box configuration --
-- --
-- This module contains configuration data for [[Module:Message box]]. --
--------------------------------------------------------------------------------
return {
ambox = {
types = {
speedy = {
class = 'ambox-speedy',
image = 'Ambox warning pn.svg'
},
delete = {
class = 'ambox-delete',
image = 'Ambox warning pn.svg'
},
content = {
class = 'ambox-content',
image = 'Ambox important.svg'
},
style = {
class = 'ambox-style',
image = 'Edit-clear.svg'
},
move = {
class = 'ambox-move',
image = 'Merge-split-transwiki default.svg'
},
protection = {
class = 'ambox-protection',
image = 'Semi-protection-shackle-keyhole.svg'
},
notice = {
class = 'ambox-notice',
image = 'Information icon4.svg'
}
},
default = 'notice',
allowBlankParams = {'talk', 'sect', 'date', 'issue', 'fix', 'hidden'},
allowSmall = true,
smallParam = 'left',
smallClass = 'mbox-small-left',
classes = {'metadata', 'ambox'},
imageEmptyCell = true,
imageCheckBlank = true,
imageSmallSize = '20x20px',
imageCellDiv = true,
useCollapsibleTextFields = true,
imageRightNone = true,
sectionDefault = 'article',
allowMainspaceCategories = true,
templateCategory = 'Article message templates',
templateCategoryRequireName = true,
templateErrorCategory = 'Article message templates with missing parameters',
templateErrorParamsToCheck = {'issue', 'fix'},
},
cmbox = {
types = {
speedy = {
class = 'cmbox-speedy',
image = 'Ambox warning pn.svg'
},
delete = {
class = 'cmbox-delete',
image = 'Ambox warning pn.svg'
},
content = {
class = 'cmbox-content',
image = 'Ambox important.svg'
},
style = {
class = 'cmbox-style',
image = 'Edit-clear.svg'
},
move = {
class = 'cmbox-move',
image = 'Merge-split-transwiki default.svg'
},
protection = {
class = 'cmbox-protection',
image = 'Semi-protection-shackle-keyhole.svg'
},
notice = {
class = 'cmbox-notice',
image = 'Information icon4.svg'
}
},
default = 'notice',
showInvalidTypeError = true,
classes = {'cmbox'},
imageEmptyCell = true
},
fmbox = {
types = {
warning = {
class = 'fmbox-warning',
image = 'Ambox warning pn.svg'
},
editnotice = {
class = 'fmbox-editnotice',
image = 'Information icon4.svg'
},
system = {
class = 'fmbox-system',
image = 'Information icon4.svg'
}
},
default = 'system',
showInvalidTypeError = true,
classes = {'fmbox'},
imageEmptyCell = false,
imageRightNone = false
},
imbox = {
types = {
speedy = {
class = 'imbox-speedy',
image = 'Ambox warning pn.svg'
},
delete = {
class = 'imbox-delete',
image = 'Ambox warning pn.svg'
},
content = {
class = 'imbox-content',
image = 'Ambox important.svg'
},
style = {
class = 'imbox-style',
image = 'Edit-clear.svg'
},
move = {
class = 'imbox-move',
image = 'Merge-split-transwiki default.svg'
},
protection = {
class = 'imbox-protection',
image = 'Semi-protection-shackle-keyhole.svg'
},
license = {
class = 'imbox-license licensetpl',
image = 'Imbox license.png' -- @todo We need an SVG version of this
},
featured = {
class = 'imbox-featured',
image = 'Cscr-featured.svg'
},
notice = {
class = 'imbox-notice',
image = 'Information icon4.svg'
}
},
default = 'notice',
showInvalidTypeError = true,
classes = {'imbox'},
imageEmptyCell = true,
below = true,
templateCategory = 'File message boxes'
},
ombox = {
types = {
speedy = {
class = 'ombox-speedy',
image = 'Ambox warning pn.svg'
},
delete = {
class = 'ombox-delete',
image = 'Ambox warning pn.svg'
},
content = {
class = 'ombox-content',
image = 'Ambox important.svg'
},
style = {
class = 'ombox-style',
image = 'Edit-clear.svg'
},
move = {
class = 'ombox-move',
image = 'Merge-split-transwiki default.svg'
},
protection = {
class = 'ombox-protection',
image = 'Semi-protection-shackle-keyhole.svg'
},
notice = {
class = 'ombox-notice',
image = 'Information icon4.svg'
}
},
default = 'notice',
showInvalidTypeError = true,
classes = {'ombox'},
allowSmall = true,
imageEmptyCell = true,
imageRightNone = true
},
tmbox = {
types = {
speedy = {
class = 'tmbox-speedy',
image = 'Ambox warning pn.svg'
},
delete = {
class = 'tmbox-delete',
image = 'Ambox warning pn.svg'
},
content = {
class = 'tmbox-content',
image = 'Ambox important.svg'
},
style = {
class = 'tmbox-style',
image = 'Edit-clear.svg'
},
move = {
class = 'tmbox-move',
image = 'Merge-split-transwiki default.svg'
},
protection = {
class = 'tmbox-protection',
image = 'Semi-protection-shackle-keyhole.svg'
},
notice = {
class = 'tmbox-notice',
image = 'Information icon4.svg'
}
},
default = 'notice',
showInvalidTypeError = true,
classes = {'tmbox'},
allowSmall = true,
imageRightNone = true,
imageEmptyCell = true,
imageEmptyCellStyle = true,
templateCategory = 'Talk message boxes'
}
}
c6bd9191861b23e474e12b19c694335c4bc3af5f
72
71
2024-08-06T06:56:47Z
Peerkartosh
2
1 revision imported from [[:dev:Module:Message_box/configuration]]
Scribunto
text/plain
--------------------------------------------------------------------------------
-- Message box configuration --
-- --
-- This module contains configuration data for [[Module:Message box]]. --
--------------------------------------------------------------------------------
return {
ambox = {
types = {
speedy = {
class = 'ambox-speedy',
image = 'Ambox warning pn.svg'
},
delete = {
class = 'ambox-delete',
image = 'Ambox warning pn.svg'
},
content = {
class = 'ambox-content',
image = 'Ambox important.svg'
},
style = {
class = 'ambox-style',
image = 'Edit-clear.svg'
},
move = {
class = 'ambox-move',
image = 'Merge-split-transwiki default.svg'
},
protection = {
class = 'ambox-protection',
image = 'Semi-protection-shackle-keyhole.svg'
},
notice = {
class = 'ambox-notice',
image = 'Information icon4.svg'
}
},
default = 'notice',
allowBlankParams = {'talk', 'sect', 'date', 'issue', 'fix', 'hidden'},
allowSmall = true,
smallParam = 'left',
smallClass = 'mbox-small-left',
classes = {'metadata', 'ambox'},
imageEmptyCell = true,
imageCheckBlank = true,
imageSmallSize = '20x20px',
imageCellDiv = true,
useCollapsibleTextFields = true,
imageRightNone = true,
sectionDefault = 'article',
allowMainspaceCategories = true,
templateCategory = 'Article message templates',
templateCategoryRequireName = true,
templateErrorCategory = 'Article message templates with missing parameters',
templateErrorParamsToCheck = {'issue', 'fix'},
},
cmbox = {
types = {
speedy = {
class = 'cmbox-speedy',
image = 'Ambox warning pn.svg'
},
delete = {
class = 'cmbox-delete',
image = 'Ambox warning pn.svg'
},
content = {
class = 'cmbox-content',
image = 'Ambox important.svg'
},
style = {
class = 'cmbox-style',
image = 'Edit-clear.svg'
},
move = {
class = 'cmbox-move',
image = 'Merge-split-transwiki default.svg'
},
protection = {
class = 'cmbox-protection',
image = 'Semi-protection-shackle-keyhole.svg'
},
notice = {
class = 'cmbox-notice',
image = 'Information icon4.svg'
}
},
default = 'notice',
showInvalidTypeError = true,
classes = {'cmbox'},
imageEmptyCell = true
},
fmbox = {
types = {
warning = {
class = 'fmbox-warning',
image = 'Ambox warning pn.svg'
},
editnotice = {
class = 'fmbox-editnotice',
image = 'Information icon4.svg'
},
system = {
class = 'fmbox-system',
image = 'Information icon4.svg'
}
},
default = 'system',
showInvalidTypeError = true,
classes = {'fmbox'},
imageEmptyCell = false,
imageRightNone = false
},
imbox = {
types = {
speedy = {
class = 'imbox-speedy',
image = 'Ambox warning pn.svg'
},
delete = {
class = 'imbox-delete',
image = 'Ambox warning pn.svg'
},
content = {
class = 'imbox-content',
image = 'Ambox important.svg'
},
style = {
class = 'imbox-style',
image = 'Edit-clear.svg'
},
move = {
class = 'imbox-move',
image = 'Merge-split-transwiki default.svg'
},
protection = {
class = 'imbox-protection',
image = 'Semi-protection-shackle-keyhole.svg'
},
license = {
class = 'imbox-license licensetpl',
image = 'Imbox license.png' -- @todo We need an SVG version of this
},
featured = {
class = 'imbox-featured',
image = 'Cscr-featured.svg'
},
notice = {
class = 'imbox-notice',
image = 'Information icon4.svg'
}
},
default = 'notice',
showInvalidTypeError = true,
classes = {'imbox'},
imageEmptyCell = true,
below = true,
templateCategory = 'File message boxes'
},
ombox = {
types = {
speedy = {
class = 'ombox-speedy',
image = 'Ambox warning pn.svg'
},
delete = {
class = 'ombox-delete',
image = 'Ambox warning pn.svg'
},
content = {
class = 'ombox-content',
image = 'Ambox important.svg'
},
style = {
class = 'ombox-style',
image = 'Edit-clear.svg'
},
move = {
class = 'ombox-move',
image = 'Merge-split-transwiki default.svg'
},
protection = {
class = 'ombox-protection',
image = 'Semi-protection-shackle-keyhole.svg'
},
notice = {
class = 'ombox-notice',
image = 'Information icon4.svg'
}
},
default = 'notice',
showInvalidTypeError = true,
classes = {'ombox'},
allowSmall = true,
imageEmptyCell = true,
imageRightNone = true
},
tmbox = {
types = {
speedy = {
class = 'tmbox-speedy',
image = 'Ambox warning pn.svg'
},
delete = {
class = 'tmbox-delete',
image = 'Ambox warning pn.svg'
},
content = {
class = 'tmbox-content',
image = 'Ambox important.svg'
},
style = {
class = 'tmbox-style',
image = 'Edit-clear.svg'
},
move = {
class = 'tmbox-move',
image = 'Merge-split-transwiki default.svg'
},
protection = {
class = 'tmbox-protection',
image = 'Semi-protection-shackle-keyhole.svg'
},
notice = {
class = 'tmbox-notice',
image = 'Information icon4.svg'
}
},
default = 'notice',
showInvalidTypeError = true,
classes = {'tmbox'},
allowSmall = true,
imageRightNone = true,
imageEmptyCell = true,
imageEmptyCellStyle = true,
templateCategory = 'Talk message boxes'
}
}
c6bd9191861b23e474e12b19c694335c4bc3af5f
Template:Mbox
10
35
65
2022-10-21T23:02:23Z
dev>Pppery
0
Reverted edits by [[Special:Contributions/Pppery|Pppery]] ([[User talk:Pppery|talk]]) to last revision by [[User:wikipedia>Amorymeltzer|wikipedia>Amorymeltzer]]
wikitext
text/x-wiki
{{#invoke:Message box|mbox}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
c262e205f85f774a23f74119179ceea11751d68e
66
65
2024-08-06T06:56:21Z
Peerkartosh
2
1 revision imported from [[:dev:Template:Mbox]]
wikitext
text/x-wiki
{{#invoke:Message box|mbox}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
c262e205f85f774a23f74119179ceea11751d68e
Module:Documentation/styles.css
828
27
48
2023-01-16T23:40:04Z
dev>Pppery
0
sanitized-css
text/css
.documentation,
.documentation-metadata {
border: 1px solid #a2a9b1;
background-color: #ecfcf4;
clear: both;
}
.documentation {
margin: 1em 0 0 0;
padding: 1em;
}
.documentation-metadata {
margin: 0.2em 0; /* same margin left-right as .documentation */
font-style: italic;
padding: 0.4em 1em; /* same padding left-right as .documentation */
}
.documentation-startbox {
padding-bottom: 3px;
border-bottom: 1px solid #aaa;
margin-bottom: 1ex;
}
.documentation-heading {
font-weight: bold;
font-size: 125%;
}
.documentation-clear { /* Don't want things to stick out where they shouldn't. */
clear: both;
}
.documentation-toolbar {
font-style: normal;
font-size: 85%;
}
/* [[Category:Template stylesheets]] */
5fb984fe8632dc068db16853a824c9f3d5175dd9
49
48
2024-08-06T06:34:45Z
Peerkartosh
2
1 revision imported from [[:dev:Module:Documentation/styles.css]]
sanitized-css
text/css
.documentation,
.documentation-metadata {
border: 1px solid #a2a9b1;
background-color: #ecfcf4;
clear: both;
}
.documentation {
margin: 1em 0 0 0;
padding: 1em;
}
.documentation-metadata {
margin: 0.2em 0; /* same margin left-right as .documentation */
font-style: italic;
padding: 0.4em 1em; /* same padding left-right as .documentation */
}
.documentation-startbox {
padding-bottom: 3px;
border-bottom: 1px solid #aaa;
margin-bottom: 1ex;
}
.documentation-heading {
font-weight: bold;
font-size: 125%;
}
.documentation-clear { /* Don't want things to stick out where they shouldn't. */
clear: both;
}
.documentation-toolbar {
font-style: normal;
font-size: 85%;
}
/* [[Category:Template stylesheets]] */
5fb984fe8632dc068db16853a824c9f3d5175dd9
Module:Message box
828
37
69
2024-03-16T15:58:57Z
dev>Pppery
0
Scribunto
text/plain
-- This is a meta-module for producing message box templates, including
-- {{mbox}}, {{ambox}}, {{imbox}}, {{tmbox}}, {{ombox}}, {{cmbox}} and {{fmbox}}.
-- Load necessary modules.
require('strict')
local getArgs
local yesno = require('Module:Yesno')
-- Get a language object for formatDate and ucfirst.
local lang = mw.language.getContentLanguage()
-- Define constants
local CONFIG_MODULE = 'Module:Message box/configuration'
local DEMOSPACES = {user = 'tmbox', talk = 'tmbox', image = 'imbox', file = 'imbox', category = 'cmbox', article = 'ambox', main = 'ambox'}
--------------------------------------------------------------------------------
-- Helper functions
--------------------------------------------------------------------------------
local function getTitleObject(...)
-- Get the title object, passing the function through pcall
-- in case we are over the expensive function count limit.
local success, title = pcall(mw.title.new, ...)
if success then
return title
end
end
local function union(t1, t2)
-- Returns the union of two arrays.
local vals = {}
for i, v in ipairs(t1) do
vals[v] = true
end
for i, v in ipairs(t2) do
vals[v] = true
end
local ret = {}
for k in pairs(vals) do
table.insert(ret, k)
end
table.sort(ret)
return ret
end
local function getArgNums(args, prefix)
local nums = {}
for k, v in pairs(args) do
local num = mw.ustring.match(tostring(k), '^' .. prefix .. '([1-9]%d*)$')
if num then
table.insert(nums, tonumber(num))
end
end
table.sort(nums)
return nums
end
--------------------------------------------------------------------------------
-- Box class definition
--------------------------------------------------------------------------------
local MessageBox = {}
MessageBox.__index = MessageBox
function MessageBox.new(boxType, args, cfg)
args = args or {}
local obj = {}
-- Set the title object and the namespace.
obj.title = getTitleObject(args.page) or mw.title.getCurrentTitle()
-- Set the config for our box type.
obj.cfg = cfg[boxType]
if not obj.cfg then
local ns = obj.title.namespace
-- boxType is "mbox" or invalid input
if args.demospace and args.demospace ~= '' then
-- implement demospace parameter of mbox
local demospace = string.lower(args.demospace)
if DEMOSPACES[demospace] then
-- use template from DEMOSPACES
obj.cfg = cfg[DEMOSPACES[demospace]]
elseif string.find( demospace, 'talk' ) then
-- demo as a talk page
obj.cfg = cfg.tmbox
else
-- default to ombox
obj.cfg = cfg.ombox
end
elseif ns == 0 then
obj.cfg = cfg.ambox -- main namespace
elseif ns == 6 then
obj.cfg = cfg.imbox -- file namespace
elseif ns == 14 then
obj.cfg = cfg.cmbox -- category namespace
else
local nsTable = mw.site.namespaces[ns]
if nsTable and nsTable.isTalk then
obj.cfg = cfg.tmbox -- any talk namespace
else
obj.cfg = cfg.ombox -- other namespaces or invalid input
end
end
end
-- Set the arguments, and remove all blank arguments except for the ones
-- listed in cfg.allowBlankParams.
do
local newArgs = {}
for k, v in pairs(args) do
if v ~= '' then
newArgs[k] = v
end
end
for i, param in ipairs(obj.cfg.allowBlankParams or {}) do
newArgs[param] = args[param]
end
obj.args = newArgs
end
-- Define internal data structure.
obj.categories = {}
obj.classes = {}
return setmetatable(obj, MessageBox)
end
function MessageBox:addClass(class)
if not class then
return nil
end
table.insert(self.classes, class)
end
function MessageBox:setParameters()
local args = self.args
local cfg = self.cfg
-- Get type data.
self.type = args.type
local typeData = cfg.types[self.type]
self.invalidTypeError = cfg.showInvalidTypeError
and self.type
and not typeData
typeData = typeData or cfg.types[cfg.default]
self.typeClass = typeData.class
self.typeImage = typeData.image
-- Find whether we are using a small message box.
self.isSmall = cfg.allowSmall and (
cfg.smallParam and args.small == cfg.smallParam
or not cfg.smallParam and yesno(args.small)
)
-- Add attributes, classes and styles.
self.id = args.id
self.name = args.name
if self.name then
self:addClass('box-' .. string.gsub(self.name,' ','_'))
end
if yesno(args.plainlinks) ~= false then
self:addClass('plainlinks')
end
for _, class in ipairs(cfg.classes or {}) do
self:addClass(class)
end
if self.isSmall then
self:addClass(cfg.smallClass or 'mbox-small')
end
self:addClass(self.typeClass)
self:addClass(args.class)
self.style = args.style
self.attrs = args.attrs
-- Set text style.
self.textstyle = args.textstyle
-- Find if we are on the template page or not. This functionality is only
-- used if useCollapsibleTextFields is set, or if both cfg.templateCategory
-- and cfg.templateCategoryRequireName are set.
self.useCollapsibleTextFields = cfg.useCollapsibleTextFields
if self.useCollapsibleTextFields
or cfg.templateCategory
and cfg.templateCategoryRequireName
then
if self.name then
local templateName = mw.ustring.match(
self.name,
'^[tT][eE][mM][pP][lL][aA][tT][eE][%s_]*:[%s_]*(.*)$'
) or self.name
templateName = 'Template:' .. templateName
self.templateTitle = getTitleObject(templateName)
end
self.isTemplatePage = self.templateTitle
and mw.title.equals(self.title, self.templateTitle)
end
-- Process data for collapsible text fields. At the moment these are only
-- used in {{ambox}}.
if self.useCollapsibleTextFields then
-- Get the self.issue value.
if self.isSmall and args.smalltext then
self.issue = args.smalltext
else
local sect
if args.sect == '' then
sect = 'This ' .. (cfg.sectionDefault or 'page')
elseif type(args.sect) == 'string' then
sect = 'This ' .. args.sect
end
local issue = args.issue
issue = type(issue) == 'string' and issue ~= '' and issue or nil
local text = args.text
text = type(text) == 'string' and text or nil
local issues = {}
table.insert(issues, sect)
table.insert(issues, issue)
table.insert(issues, text)
self.issue = table.concat(issues, ' ')
end
-- Get the self.talk value.
local talk = args.talk
-- Show talk links on the template page or template subpages if the talk
-- parameter is blank.
if talk == ''
and self.templateTitle
and (
mw.title.equals(self.templateTitle, self.title)
or self.title:isSubpageOf(self.templateTitle)
)
then
talk = '#'
elseif talk == '' then
talk = nil
end
if talk then
-- If the talk value is a talk page, make a link to that page. Else
-- assume that it's a section heading, and make a link to the talk
-- page of the current page with that section heading.
local talkTitle = getTitleObject(talk)
local talkArgIsTalkPage = true
if not talkTitle or not talkTitle.isTalkPage then
talkArgIsTalkPage = false
talkTitle = getTitleObject(
self.title.text,
mw.site.namespaces[self.title.namespace].talk.id
)
end
if talkTitle and talkTitle.exists then
local talkText = 'Relevant discussion may be found on'
if talkArgIsTalkPage then
talkText = string.format(
'%s [[%s|%s]].',
talkText,
talk,
talkTitle.prefixedText
)
else
talkText = string.format(
'%s the [[%s#%s|talk page]].',
talkText,
talkTitle.prefixedText,
talk
)
end
self.talk = talkText
end
end
-- Get other values.
self.fix = args.fix ~= '' and args.fix or nil
local date
if args.date and args.date ~= '' then
date = args.date
elseif args.date == '' and self.isTemplatePage then
date = lang:formatDate('F Y')
end
if date then
self.date = string.format(" <small class='date-container'>''(<span class='date'>%s</span>)''</small>", date)
end
self.info = args.info
end
-- Set the non-collapsible text field. At the moment this is used by all box
-- types other than ambox, and also by ambox when small=yes.
if self.isSmall then
self.text = args.smalltext or args.text
else
self.text = args.text
end
-- Set the below row.
self.below = cfg.below and args.below
-- General image settings.
self.imageCellDiv = not self.isSmall and cfg.imageCellDiv
self.imageEmptyCell = cfg.imageEmptyCell
if cfg.imageEmptyCellStyle then
self.imageEmptyCellStyle = 'border:none;padding:0px;width:1px'
end
-- Left image settings.
local imageLeft = self.isSmall and args.smallimage or args.image
if cfg.imageCheckBlank and imageLeft ~= 'blank' and imageLeft ~= 'none'
or not cfg.imageCheckBlank and imageLeft ~= 'none'
then
self.imageLeft = imageLeft
if not imageLeft then
local imageSize = self.isSmall
and (cfg.imageSmallSize or '30x30px')
or '40x40px'
self.imageLeft = string.format('[[File:%s|%s|link=|alt=]]', self.typeImage
or 'Imbox notice.png', imageSize)
end
end
-- Right image settings.
local imageRight = self.isSmall and args.smallimageright or args.imageright
if not (cfg.imageRightNone and imageRight == 'none') then
self.imageRight = imageRight
end
end
function MessageBox:export()
local root = mw.html.create()
-- Create the box table.
local boxTable = root:tag('table')
boxTable:attr('id', self.id or nil)
for i, class in ipairs(self.classes or {}) do
boxTable:addClass(class or nil)
end
boxTable
:cssText(self.style or nil)
:attr('role', 'presentation')
if self.attrs then
boxTable:attr(self.attrs)
end
-- Add the left-hand image.
local row = boxTable:tag('tr')
if self.imageLeft then
local imageLeftCell = row:tag('td'):addClass('mbox-image')
if self.imageCellDiv then
-- If we are using a div, redefine imageLeftCell so that the image
-- is inside it. Divs use style="width: 52px;", which limits the
-- image width to 52px. If any images in a div are wider than that,
-- they may overlap with the text or cause other display problems.
imageLeftCell = imageLeftCell:tag('div'):css('width', '52px')
end
imageLeftCell:wikitext(self.imageLeft or nil)
elseif self.imageEmptyCell then
-- Some message boxes define an empty cell if no image is specified, and
-- some don't. The old template code in templates where empty cells are
-- specified gives the following hint: "No image. Cell with some width
-- or padding necessary for text cell to have 100% width."
row:tag('td')
:addClass('mbox-empty-cell')
:cssText(self.imageEmptyCellStyle or nil)
end
-- Add the text.
local textCell = row:tag('td'):addClass('mbox-text')
if self.useCollapsibleTextFields then
-- The message box uses advanced text parameters that allow things to be
-- collapsible. At the moment, only ambox uses this.
textCell:cssText(self.textstyle or nil)
local textCellDiv = textCell:tag('div')
textCellDiv
:addClass('mbox-text-span')
:wikitext(self.issue or nil)
if (self.talk or self.fix) and not self.isSmall then
textCellDiv:tag('span')
:addClass('hide-when-compact')
:wikitext(self.talk and (' ' .. self.talk) or nil)
:wikitext(self.fix and (' ' .. self.fix) or nil)
end
textCellDiv:wikitext(self.date and (' ' .. self.date) or nil)
if self.info and not self.isSmall then
textCellDiv
:tag('span')
:addClass('hide-when-compact')
:wikitext(self.info and (' ' .. self.info) or nil)
end
else
-- Default text formatting - anything goes.
textCell
:cssText(self.textstyle or nil)
:wikitext(self.text or nil)
end
-- Add the right-hand image.
if self.imageRight then
local imageRightCell = row:tag('td'):addClass('mbox-imageright')
if self.imageCellDiv then
-- If we are using a div, redefine imageRightCell so that the image
-- is inside it.
imageRightCell = imageRightCell:tag('div'):css('width', '52px')
end
imageRightCell
:wikitext(self.imageRight or nil)
end
-- Add the below row.
if self.below then
boxTable:tag('tr')
:tag('td')
:attr('colspan', self.imageRight and '3' or '2')
:addClass('mbox-text')
:cssText(self.textstyle or nil)
:wikitext(self.below or nil)
end
-- Add error message for invalid type parameters.
if self.invalidTypeError then
root:tag('div')
:css('text-align', 'center')
:wikitext(string.format(
'This message box is using an invalid "type=%s" parameter and needs fixing.',
self.type or ''
))
end
return tostring(root)
end
--------------------------------------------------------------------------------
-- Exports
--------------------------------------------------------------------------------
local p, mt = {}, {}
function p._exportClasses()
-- For testing.
return {
MessageBox = MessageBox
}
end
function p.main(boxType, args, cfgTables)
local box = MessageBox.new(boxType, args, cfgTables or mw.loadData(CONFIG_MODULE))
box:setParameters()
return box:export()
end
function mt.__index(t, k)
return function (frame)
if not getArgs then
getArgs = require('Module:Arguments').getArgs
end
return t.main(k, getArgs(frame, {trim = false, removeBlanks = false}))
end
end
return setmetatable(p, mt)
d27e9f70be302031cb1a5d2a4d207698e6377b23
70
69
2024-08-06T06:56:40Z
Peerkartosh
2
1 revision imported from [[:dev:Module:Message_box]]
Scribunto
text/plain
-- This is a meta-module for producing message box templates, including
-- {{mbox}}, {{ambox}}, {{imbox}}, {{tmbox}}, {{ombox}}, {{cmbox}} and {{fmbox}}.
-- Load necessary modules.
require('strict')
local getArgs
local yesno = require('Module:Yesno')
-- Get a language object for formatDate and ucfirst.
local lang = mw.language.getContentLanguage()
-- Define constants
local CONFIG_MODULE = 'Module:Message box/configuration'
local DEMOSPACES = {user = 'tmbox', talk = 'tmbox', image = 'imbox', file = 'imbox', category = 'cmbox', article = 'ambox', main = 'ambox'}
--------------------------------------------------------------------------------
-- Helper functions
--------------------------------------------------------------------------------
local function getTitleObject(...)
-- Get the title object, passing the function through pcall
-- in case we are over the expensive function count limit.
local success, title = pcall(mw.title.new, ...)
if success then
return title
end
end
local function union(t1, t2)
-- Returns the union of two arrays.
local vals = {}
for i, v in ipairs(t1) do
vals[v] = true
end
for i, v in ipairs(t2) do
vals[v] = true
end
local ret = {}
for k in pairs(vals) do
table.insert(ret, k)
end
table.sort(ret)
return ret
end
local function getArgNums(args, prefix)
local nums = {}
for k, v in pairs(args) do
local num = mw.ustring.match(tostring(k), '^' .. prefix .. '([1-9]%d*)$')
if num then
table.insert(nums, tonumber(num))
end
end
table.sort(nums)
return nums
end
--------------------------------------------------------------------------------
-- Box class definition
--------------------------------------------------------------------------------
local MessageBox = {}
MessageBox.__index = MessageBox
function MessageBox.new(boxType, args, cfg)
args = args or {}
local obj = {}
-- Set the title object and the namespace.
obj.title = getTitleObject(args.page) or mw.title.getCurrentTitle()
-- Set the config for our box type.
obj.cfg = cfg[boxType]
if not obj.cfg then
local ns = obj.title.namespace
-- boxType is "mbox" or invalid input
if args.demospace and args.demospace ~= '' then
-- implement demospace parameter of mbox
local demospace = string.lower(args.demospace)
if DEMOSPACES[demospace] then
-- use template from DEMOSPACES
obj.cfg = cfg[DEMOSPACES[demospace]]
elseif string.find( demospace, 'talk' ) then
-- demo as a talk page
obj.cfg = cfg.tmbox
else
-- default to ombox
obj.cfg = cfg.ombox
end
elseif ns == 0 then
obj.cfg = cfg.ambox -- main namespace
elseif ns == 6 then
obj.cfg = cfg.imbox -- file namespace
elseif ns == 14 then
obj.cfg = cfg.cmbox -- category namespace
else
local nsTable = mw.site.namespaces[ns]
if nsTable and nsTable.isTalk then
obj.cfg = cfg.tmbox -- any talk namespace
else
obj.cfg = cfg.ombox -- other namespaces or invalid input
end
end
end
-- Set the arguments, and remove all blank arguments except for the ones
-- listed in cfg.allowBlankParams.
do
local newArgs = {}
for k, v in pairs(args) do
if v ~= '' then
newArgs[k] = v
end
end
for i, param in ipairs(obj.cfg.allowBlankParams or {}) do
newArgs[param] = args[param]
end
obj.args = newArgs
end
-- Define internal data structure.
obj.categories = {}
obj.classes = {}
return setmetatable(obj, MessageBox)
end
function MessageBox:addClass(class)
if not class then
return nil
end
table.insert(self.classes, class)
end
function MessageBox:setParameters()
local args = self.args
local cfg = self.cfg
-- Get type data.
self.type = args.type
local typeData = cfg.types[self.type]
self.invalidTypeError = cfg.showInvalidTypeError
and self.type
and not typeData
typeData = typeData or cfg.types[cfg.default]
self.typeClass = typeData.class
self.typeImage = typeData.image
-- Find whether we are using a small message box.
self.isSmall = cfg.allowSmall and (
cfg.smallParam and args.small == cfg.smallParam
or not cfg.smallParam and yesno(args.small)
)
-- Add attributes, classes and styles.
self.id = args.id
self.name = args.name
if self.name then
self:addClass('box-' .. string.gsub(self.name,' ','_'))
end
if yesno(args.plainlinks) ~= false then
self:addClass('plainlinks')
end
for _, class in ipairs(cfg.classes or {}) do
self:addClass(class)
end
if self.isSmall then
self:addClass(cfg.smallClass or 'mbox-small')
end
self:addClass(self.typeClass)
self:addClass(args.class)
self.style = args.style
self.attrs = args.attrs
-- Set text style.
self.textstyle = args.textstyle
-- Find if we are on the template page or not. This functionality is only
-- used if useCollapsibleTextFields is set, or if both cfg.templateCategory
-- and cfg.templateCategoryRequireName are set.
self.useCollapsibleTextFields = cfg.useCollapsibleTextFields
if self.useCollapsibleTextFields
or cfg.templateCategory
and cfg.templateCategoryRequireName
then
if self.name then
local templateName = mw.ustring.match(
self.name,
'^[tT][eE][mM][pP][lL][aA][tT][eE][%s_]*:[%s_]*(.*)$'
) or self.name
templateName = 'Template:' .. templateName
self.templateTitle = getTitleObject(templateName)
end
self.isTemplatePage = self.templateTitle
and mw.title.equals(self.title, self.templateTitle)
end
-- Process data for collapsible text fields. At the moment these are only
-- used in {{ambox}}.
if self.useCollapsibleTextFields then
-- Get the self.issue value.
if self.isSmall and args.smalltext then
self.issue = args.smalltext
else
local sect
if args.sect == '' then
sect = 'This ' .. (cfg.sectionDefault or 'page')
elseif type(args.sect) == 'string' then
sect = 'This ' .. args.sect
end
local issue = args.issue
issue = type(issue) == 'string' and issue ~= '' and issue or nil
local text = args.text
text = type(text) == 'string' and text or nil
local issues = {}
table.insert(issues, sect)
table.insert(issues, issue)
table.insert(issues, text)
self.issue = table.concat(issues, ' ')
end
-- Get the self.talk value.
local talk = args.talk
-- Show talk links on the template page or template subpages if the talk
-- parameter is blank.
if talk == ''
and self.templateTitle
and (
mw.title.equals(self.templateTitle, self.title)
or self.title:isSubpageOf(self.templateTitle)
)
then
talk = '#'
elseif talk == '' then
talk = nil
end
if talk then
-- If the talk value is a talk page, make a link to that page. Else
-- assume that it's a section heading, and make a link to the talk
-- page of the current page with that section heading.
local talkTitle = getTitleObject(talk)
local talkArgIsTalkPage = true
if not talkTitle or not talkTitle.isTalkPage then
talkArgIsTalkPage = false
talkTitle = getTitleObject(
self.title.text,
mw.site.namespaces[self.title.namespace].talk.id
)
end
if talkTitle and talkTitle.exists then
local talkText = 'Relevant discussion may be found on'
if talkArgIsTalkPage then
talkText = string.format(
'%s [[%s|%s]].',
talkText,
talk,
talkTitle.prefixedText
)
else
talkText = string.format(
'%s the [[%s#%s|talk page]].',
talkText,
talkTitle.prefixedText,
talk
)
end
self.talk = talkText
end
end
-- Get other values.
self.fix = args.fix ~= '' and args.fix or nil
local date
if args.date and args.date ~= '' then
date = args.date
elseif args.date == '' and self.isTemplatePage then
date = lang:formatDate('F Y')
end
if date then
self.date = string.format(" <small class='date-container'>''(<span class='date'>%s</span>)''</small>", date)
end
self.info = args.info
end
-- Set the non-collapsible text field. At the moment this is used by all box
-- types other than ambox, and also by ambox when small=yes.
if self.isSmall then
self.text = args.smalltext or args.text
else
self.text = args.text
end
-- Set the below row.
self.below = cfg.below and args.below
-- General image settings.
self.imageCellDiv = not self.isSmall and cfg.imageCellDiv
self.imageEmptyCell = cfg.imageEmptyCell
if cfg.imageEmptyCellStyle then
self.imageEmptyCellStyle = 'border:none;padding:0px;width:1px'
end
-- Left image settings.
local imageLeft = self.isSmall and args.smallimage or args.image
if cfg.imageCheckBlank and imageLeft ~= 'blank' and imageLeft ~= 'none'
or not cfg.imageCheckBlank and imageLeft ~= 'none'
then
self.imageLeft = imageLeft
if not imageLeft then
local imageSize = self.isSmall
and (cfg.imageSmallSize or '30x30px')
or '40x40px'
self.imageLeft = string.format('[[File:%s|%s|link=|alt=]]', self.typeImage
or 'Imbox notice.png', imageSize)
end
end
-- Right image settings.
local imageRight = self.isSmall and args.smallimageright or args.imageright
if not (cfg.imageRightNone and imageRight == 'none') then
self.imageRight = imageRight
end
end
function MessageBox:export()
local root = mw.html.create()
-- Create the box table.
local boxTable = root:tag('table')
boxTable:attr('id', self.id or nil)
for i, class in ipairs(self.classes or {}) do
boxTable:addClass(class or nil)
end
boxTable
:cssText(self.style or nil)
:attr('role', 'presentation')
if self.attrs then
boxTable:attr(self.attrs)
end
-- Add the left-hand image.
local row = boxTable:tag('tr')
if self.imageLeft then
local imageLeftCell = row:tag('td'):addClass('mbox-image')
if self.imageCellDiv then
-- If we are using a div, redefine imageLeftCell so that the image
-- is inside it. Divs use style="width: 52px;", which limits the
-- image width to 52px. If any images in a div are wider than that,
-- they may overlap with the text or cause other display problems.
imageLeftCell = imageLeftCell:tag('div'):css('width', '52px')
end
imageLeftCell:wikitext(self.imageLeft or nil)
elseif self.imageEmptyCell then
-- Some message boxes define an empty cell if no image is specified, and
-- some don't. The old template code in templates where empty cells are
-- specified gives the following hint: "No image. Cell with some width
-- or padding necessary for text cell to have 100% width."
row:tag('td')
:addClass('mbox-empty-cell')
:cssText(self.imageEmptyCellStyle or nil)
end
-- Add the text.
local textCell = row:tag('td'):addClass('mbox-text')
if self.useCollapsibleTextFields then
-- The message box uses advanced text parameters that allow things to be
-- collapsible. At the moment, only ambox uses this.
textCell:cssText(self.textstyle or nil)
local textCellDiv = textCell:tag('div')
textCellDiv
:addClass('mbox-text-span')
:wikitext(self.issue or nil)
if (self.talk or self.fix) and not self.isSmall then
textCellDiv:tag('span')
:addClass('hide-when-compact')
:wikitext(self.talk and (' ' .. self.talk) or nil)
:wikitext(self.fix and (' ' .. self.fix) or nil)
end
textCellDiv:wikitext(self.date and (' ' .. self.date) or nil)
if self.info and not self.isSmall then
textCellDiv
:tag('span')
:addClass('hide-when-compact')
:wikitext(self.info and (' ' .. self.info) or nil)
end
else
-- Default text formatting - anything goes.
textCell
:cssText(self.textstyle or nil)
:wikitext(self.text or nil)
end
-- Add the right-hand image.
if self.imageRight then
local imageRightCell = row:tag('td'):addClass('mbox-imageright')
if self.imageCellDiv then
-- If we are using a div, redefine imageRightCell so that the image
-- is inside it.
imageRightCell = imageRightCell:tag('div'):css('width', '52px')
end
imageRightCell
:wikitext(self.imageRight or nil)
end
-- Add the below row.
if self.below then
boxTable:tag('tr')
:tag('td')
:attr('colspan', self.imageRight and '3' or '2')
:addClass('mbox-text')
:cssText(self.textstyle or nil)
:wikitext(self.below or nil)
end
-- Add error message for invalid type parameters.
if self.invalidTypeError then
root:tag('div')
:css('text-align', 'center')
:wikitext(string.format(
'This message box is using an invalid "type=%s" parameter and needs fixing.',
self.type or ''
))
end
return tostring(root)
end
--------------------------------------------------------------------------------
-- Exports
--------------------------------------------------------------------------------
local p, mt = {}, {}
function p._exportClasses()
-- For testing.
return {
MessageBox = MessageBox
}
end
function p.main(boxType, args, cfgTables)
local box = MessageBox.new(boxType, args, cfgTables or mw.loadData(CONFIG_MODULE))
box:setParameters()
return box:export()
end
function mt.__index(t, k)
return function (frame)
if not getArgs then
getArgs = require('Module:Arguments').getArgs
end
return t.main(k, getArgs(frame, {trim = false, removeBlanks = false}))
end
end
return setmetatable(p, mt)
d27e9f70be302031cb1a5d2a4d207698e6377b23
Module:Yesno
828
36
67
2024-05-01T11:27:14Z
dev>Rodejong
0
Undo revision [[Special:Diff/23696|23696]] by [[Special:Contributions/Silicona|Silicona]] ([[User talk:Silicona|talk]]) Needless
Scribunto
text/plain
-- Function allowing for consistent treatment of boolean-like wikitext input.
-- It works similarly to the template {{yesno}}.
return function (val, default)
-- If your wiki uses non-ascii characters for any of "yes", "no", etc., you
-- should replace "val:lower()" with "mw.ustring.lower(val)" in the
-- following line.
val = type(val) == 'string' and val:lower() or val
if val == nil then
return nil
elseif val == true
or val == 'yes'
or val == 'y'
or val == 'true'
or val == 't'
or val == 'on'
or tonumber(val) == 1
then
return true
elseif val == false
or val == 'no'
or val == 'n'
or val == 'false'
or val == 'f'
or val == 'off'
or tonumber(val) == 0
then
return false
else
return default
end
end
f767643e7d12126d020d88d662a3dd057817b9dc
68
67
2024-08-06T06:56:30Z
Peerkartosh
2
1 revision imported from [[:dev:Module:Yesno]]
Scribunto
text/plain
-- Function allowing for consistent treatment of boolean-like wikitext input.
-- It works similarly to the template {{yesno}}.
return function (val, default)
-- If your wiki uses non-ascii characters for any of "yes", "no", etc., you
-- should replace "val:lower()" with "mw.ustring.lower(val)" in the
-- following line.
val = type(val) == 'string' and val:lower() or val
if val == nil then
return nil
elseif val == true
or val == 'yes'
or val == 'y'
or val == 'true'
or val == 't'
or val == 'on'
or tonumber(val) == 1
then
return true
elseif val == false
or val == 'no'
or val == 'n'
or val == 'false'
or val == 'f'
or val == 'off'
or tonumber(val) == 0
then
return false
else
return default
end
end
f767643e7d12126d020d88d662a3dd057817b9dc
Template:Ambox
10
21
36
2024-06-17T16:18:35Z
dev>Rodejong
0
Undo revision [[Special:Diff/25082|25082]] by [[Special:Contributions/Policied|Policied]] ([[User talk:Policied|talk]]) we're not Wikipedia
wikitext
text/x-wiki
{{{!}} style="{{{style|}}}" class="metadata plainlinks ambox {{#switch:{{{type|}}}
| serious = ambox-serious
| content = ambox-content
| style = ambox-style
| merge = ambox-merge
| notice = ambox-notice
| #default = ambox-notice
}}"
{{!}}-
{{#ifeq:{{{image}}}|none
| <!-- no image cell -->
| <nowiki/>
{{!}} class="mbox-image" {{!}} {{#switch:{{{image|{{{type|}}}}}}
| serious = [[File:Stop hand nuvola.svg|40px]]
| content = [[File:Emblem-important.svg|40px]]
| style = [[File:Broom icon.svg|40px]]
| merge = [[File:Merge-split-transwiki default.svg]]
| notice = [[File:Info non-talk.png|40px]]
| blank = <!-- empty image cell -->
| #default = {{{image|[[File:Info non-talk.png|40px]]}}}
}}
}}
{{!}} style="{{{textstyle|}}}" {{!}} {{{text}}}
{{#if:{{{imageright|}}}| <nowiki/>
{{!}} class="mbox-imageright" {{!}} {{#switch:{{{imageright|{{{type|}}}}}}
| serious = [[File:Stop hand nuvola.svg|40px]]
| content = [[File:Emblem-important.svg|40px]]
| style = [[File:Broom icon.svg|40px]]
| merge = [[File:Merge-split-transwiki default.svg]]
| notice = [[File:Info non-talk.png|40px]]
| blank = <!-- empty image cell -->
| #default = {{{imageright|}}}
}}
}}
{{!}}-
{{!}}}<noinclude>{{Documentation}}</noinclude>
466b51fa1c49a2991be77643cf50a1d0cd342f2c
37
36
2024-08-06T06:28:06Z
Peerkartosh
2
1 revision imported from [[:dev:Template:Ambox]]
wikitext
text/x-wiki
{{{!}} style="{{{style|}}}" class="metadata plainlinks ambox {{#switch:{{{type|}}}
| serious = ambox-serious
| content = ambox-content
| style = ambox-style
| merge = ambox-merge
| notice = ambox-notice
| #default = ambox-notice
}}"
{{!}}-
{{#ifeq:{{{image}}}|none
| <!-- no image cell -->
| <nowiki/>
{{!}} class="mbox-image" {{!}} {{#switch:{{{image|{{{type|}}}}}}
| serious = [[File:Stop hand nuvola.svg|40px]]
| content = [[File:Emblem-important.svg|40px]]
| style = [[File:Broom icon.svg|40px]]
| merge = [[File:Merge-split-transwiki default.svg]]
| notice = [[File:Info non-talk.png|40px]]
| blank = <!-- empty image cell -->
| #default = {{{image|[[File:Info non-talk.png|40px]]}}}
}}
}}
{{!}} style="{{{textstyle|}}}" {{!}} {{{text}}}
{{#if:{{{imageright|}}}| <nowiki/>
{{!}} class="mbox-imageright" {{!}} {{#switch:{{{imageright|{{{type|}}}}}}
| serious = [[File:Stop hand nuvola.svg|40px]]
| content = [[File:Emblem-important.svg|40px]]
| style = [[File:Broom icon.svg|40px]]
| merge = [[File:Merge-split-transwiki default.svg]]
| notice = [[File:Info non-talk.png|40px]]
| blank = <!-- empty image cell -->
| #default = {{{imageright|}}}
}}
}}
{{!}}-
{{!}}}<noinclude>{{Documentation}}</noinclude>
466b51fa1c49a2991be77643cf50a1d0cd342f2c
79
37
2024-08-06T07:37:21Z
Peerkartosh
2
wikitext
text/x-wiki
{{{!}} style="{{{style|}}}" class="metadata plainlinks ambox {{#switch:{{{type|}}}
| serious = ambox-serious
| content = ambox-content
| style = ambox-style
| merge = ambox-merge
| notice = ambox-notice
| #default = ambox-notice
}}"
{{!}}-
{{#ifeq:{{{image}}}|none
| <!-- no image cell -->
| <nowiki/>
{{!}} class="mbox-image" {{!}} {{#switch:{{{image|{{{type|}}}}}}
| serious = [[File:Stop hand nuvola.svg|40px]]
| content = [[File:Emblem-important.svg|40px]]
| style = [[File:Broom icon.svg|40px]]
| merge = [[File:Merge-split-transwiki default.svg]]
| notice = [[File:Info non-talk.png|40px]]
| blank = <!-- empty image cell -->
| #default = {{{image|[[File:Info non-talk.png|40px]]}}}
}}
}}
{{!}} style="mbox-text" {{!}} {{{text}}}
{{#if:{{{imageright|}}}| <nowiki/>
{{!}} class="mbox-imageright" {{!}} {{#switch:{{{imageright|{{{type|}}}}}}
| serious = [[File:Stop hand nuvola.svg|40px]]
| content = [[File:Emblem-important.svg|40px]]
| style = [[File:Broom icon.svg|40px]]
| merge = [[File:Merge-split-transwiki default.svg]]
| notice = [[File:Info non-talk.png|40px]]
| blank = <!-- empty image cell -->
| #default = {{{imageright|}}}
}}
}}
{{!}}-
{{!}}}<noinclude>{{Documentation}}</noinclude>
aff8b26066716a82f1b8e23e772049f7b6bab681
Template:Documentation/doc
10
28
50
2024-07-01T21:20:33Z
dev>Collei
0
wikitext
text/x-wiki
{{documentation subpage}}
{{Dependencies|Module:Arguments|Module:Documentation|Module:Documentation/config}}
This is the {{tl|Documentation}} template, used on almost every template page to contain that template's documented instructions and information. You may want to use {{tl|Simple documentation}} instead, which uses a different style and fewer dependencies.
This template displays a green documentation box like you are seeing now and automatically loads the content from a /doc subpage. It can also load the content from other places if instructed to.
This template is intended for documenting templates and other pages that are [[mw:Transclusion|transcluded]] onto other pages.
Use of this template allows templates to be [[mw:Help:Protection|protected]] where necessary, while allowing anyone to edit the documentation and categories.
===Usage===
Normally this template is used without any parameters, placed at the bottom of the template or page being documented, within a <noinclude> container:
<syntaxhighlight lang="xml+smarty">
<!--Last line of your template code--><noinclude>
{{Documentation}}
<!-- Add categories to the /doc subpage, interwikis to Wikidata, not here -->
</noinclude>
</syntaxhighlight>
Then this template automatically loads the content from the /doc subpage of the template it is used on, along with automatically transcluding {{tl|How to export}}. To hide the instructions from {{tl|How to export}}, set the parameter <code>noexportinstructions</code> to <code>yes</code>
This template can also load the content from any other page. Like this:
<syntaxhighlight lang="xml+smarty">
<!--Last line of your template code--><noinclude>
{{Documentation |Template:Other page/doc}}
</noinclude>
</syntaxhighlight>
Note that when loading the documentation from a page other than the local /doc page it becomes tricky to handle the categories.
The content can also be fed directly as text. Like this:
<syntaxhighlight lang="xml+smarty">
<!--Last line of your template code--><noinclude>
{{Documentation
| content =
(some documentation)
}}</noinclude>
</syntaxhighlight>
When the <nowiki>|content=</nowiki> parameter is used, the doc box normally does not show the [edit] [purge] links in the top right corner. Note that if the /doc page exists, a link to it is still shown in the link box below the doc box.
Parameter <nowiki>|1=</nowiki> and the <nowiki>|content=</nowiki> parameter can also be combined, like this:
<syntaxhighlight lang="xml+smarty">
<!--Last line of your template code--><noinclude>
{{Documentation |1=Template:Any page/doc
| content =
{{Template:Any page/doc |parameters}}
}}</noinclude>
</syntaxhighlight>
Then the pagename fed as parameter 1 is used for the [edit] [purge] links and for the /doc link in the link box below the doc box. But the '''content''' parameter is used for the content shown in the doc box. The above code means that the content is transcluded as {{tlx|Any page/doc|parameters}}. In this example a parameter is also fed to the /doc page being loaded.
=== Shortcut ===
To automatically insert the [[w:Wikipedia:Noinclude|noinclude tags]], the template call and the guiding comment, use this [[w:WP:Substitution|substitution]] code:<br>
:<code><nowiki>{{subst:doc-code}}</nowiki></code>
===Best practice===
The code should be added at the bottom of the template code, with no space before <noinclude> (which would cause extra space on pages where the template is used).
Categories that apply to the template itself should be added to the bottom of the /doc subpage, inside <includeonly> tags.
If the documentation page contains <includeonly> or <noinclude> tags as part of the visible documentation text, replace the "<code><</code>" with "<code>&lt;</code>".
===Heading===
When in the Template namespace, this template shows this heading:
:[[File:Test Template Info-Icon - Version (2).svg|32px|link=[[w:Wikipedia:Template documentation]]]] '''Template documentation'''
In most other namespaces, such as "{{SITENAME}}:", it shows this heading:
:'''Documentation'''
But when on File (image) pages it shows this heading:
:'''Summary'''
The '''heading''' parameter can be used to set the heading to something else. Like this:
:<code><nowiki>{{Documentation |heading=Infobox documentation}}</nowiki></code>
If the '''heading''' parameter is empty but defined, no heading is shown and no [edit] [purge] links are shown. Like this:
:<code><nowiki>{{Documentation |heading=}}</nowiki></code>
The '''heading-style''' parameter can be fed optional [[w:Cascading Style Sheets|CSS]] values. Without quotation marks <code>" "</code> but with the ending semicolons <code>;</code>. For example:
:<code>heading-style=font-size:150%;color:red;</code>
===Link box===
Below the big doc box is a small link box that shows some meta-data about the documentation. The link box shows different things depending on what parameters are fed to this template, and in which namespace it is used. In some cases the link box is not shown at all.
To hide the link box, add the parameter
: <nowiki>|link box=off</nowiki>.
You can also insert customised text into the link box, by setting the <nowiki>|link box=</nowiki> parameter. For example:
<pre style="width:auto; overflow:scroll">
|link box=This documentation is automatically generated by [[w:Template:Country showdata]]
</pre>
===Automatic functions===
If the documentation page does not exist, the [create] link includes a [[mw:Manual:Creating pages with preloaded text|preload]] page so that clicking it will pre-fill the edit form with the basic documentation page format. Preload text is also used for the /sandbox and /testcases [create] links.
===Subject namespaces vs. talk namespaces===
Terminology: ''Subject namespaces'' are the opposite of ''talk namespaces''. For instance "Template:" is the subject space of "Template talk:".
This template is usually placed in a subject namespace, within <noinclude> tags. But in some cases this template needs to be on the talk page:
* In the Mediawiki namespace, since <noinclude> often does not work in system messages, and since the Mediawiki namespace needs to be kept clean for performance reasons.
When placed on talk pages, this template usually is placed near the top of the page and without <noinclude> tags.
The /doc, /sandbox and /testcases pages should normally be in the subject namespace, except in the namespaces that do not have the MediaWiki [[w:m:Help:Link#Subpage feature|subpage feature]] enabled: Main, File, Mediawiki and Category. (But currently we only show the /sandbox and /testcases links from User, User talk, Template and Template talk namespaces.) There are also a whole bunch of other technical reasons why the /doc page must be stored under the talk page for those (but only those) namespaces.
This template automatically points its [create] links for the /doc, /sandbox and /testcases to the right namespace.
===Technical details===
The preload page for the /doc [create] link is [[Template:Documentation/preload]]. The preload pages for the /sandbox and /testcases [create] links are [[Template:Documentation/preload-sandbox]] and [[Template:Documentation/preload-testcases]]. The preload page for the /sandbox [mirror] link is [[Template:Documentation/mirror]].
====Full syntax====
<pre>
{{Documentation}}
{{Documentation
| content =
}}
{{Documentation
| [path to documentation page]
| heading-style =
| heading =
| link box =
}}
</pre>
===See also===
* {{tl|Documentation subpage}}, a notice placed at the top of a /doc subpage explaining its role and including a link to the page it documents.
* [[w:Wikipedia:Template documentation]] is a how-to guide to template documentation.
* [[w:Wikipedia:Template sandbox and test cases]] explains the use of /sandbox and /testcases subpages and includes more information about template testing.
<includeonly>[[Category:Documentation templates]]</includeonly>
a653fcc94dcdcb2223758749be58d805327597b5
51
50
2024-08-06T06:35:41Z
Peerkartosh
2
1 revision imported from [[:dev:Template:Documentation/doc]]
wikitext
text/x-wiki
{{documentation subpage}}
{{Dependencies|Module:Arguments|Module:Documentation|Module:Documentation/config}}
This is the {{tl|Documentation}} template, used on almost every template page to contain that template's documented instructions and information. You may want to use {{tl|Simple documentation}} instead, which uses a different style and fewer dependencies.
This template displays a green documentation box like you are seeing now and automatically loads the content from a /doc subpage. It can also load the content from other places if instructed to.
This template is intended for documenting templates and other pages that are [[mw:Transclusion|transcluded]] onto other pages.
Use of this template allows templates to be [[mw:Help:Protection|protected]] where necessary, while allowing anyone to edit the documentation and categories.
===Usage===
Normally this template is used without any parameters, placed at the bottom of the template or page being documented, within a <noinclude> container:
<syntaxhighlight lang="xml+smarty">
<!--Last line of your template code--><noinclude>
{{Documentation}}
<!-- Add categories to the /doc subpage, interwikis to Wikidata, not here -->
</noinclude>
</syntaxhighlight>
Then this template automatically loads the content from the /doc subpage of the template it is used on, along with automatically transcluding {{tl|How to export}}. To hide the instructions from {{tl|How to export}}, set the parameter <code>noexportinstructions</code> to <code>yes</code>
This template can also load the content from any other page. Like this:
<syntaxhighlight lang="xml+smarty">
<!--Last line of your template code--><noinclude>
{{Documentation |Template:Other page/doc}}
</noinclude>
</syntaxhighlight>
Note that when loading the documentation from a page other than the local /doc page it becomes tricky to handle the categories.
The content can also be fed directly as text. Like this:
<syntaxhighlight lang="xml+smarty">
<!--Last line of your template code--><noinclude>
{{Documentation
| content =
(some documentation)
}}</noinclude>
</syntaxhighlight>
When the <nowiki>|content=</nowiki> parameter is used, the doc box normally does not show the [edit] [purge] links in the top right corner. Note that if the /doc page exists, a link to it is still shown in the link box below the doc box.
Parameter <nowiki>|1=</nowiki> and the <nowiki>|content=</nowiki> parameter can also be combined, like this:
<syntaxhighlight lang="xml+smarty">
<!--Last line of your template code--><noinclude>
{{Documentation |1=Template:Any page/doc
| content =
{{Template:Any page/doc |parameters}}
}}</noinclude>
</syntaxhighlight>
Then the pagename fed as parameter 1 is used for the [edit] [purge] links and for the /doc link in the link box below the doc box. But the '''content''' parameter is used for the content shown in the doc box. The above code means that the content is transcluded as {{tlx|Any page/doc|parameters}}. In this example a parameter is also fed to the /doc page being loaded.
=== Shortcut ===
To automatically insert the [[w:Wikipedia:Noinclude|noinclude tags]], the template call and the guiding comment, use this [[w:WP:Substitution|substitution]] code:<br>
:<code><nowiki>{{subst:doc-code}}</nowiki></code>
===Best practice===
The code should be added at the bottom of the template code, with no space before <noinclude> (which would cause extra space on pages where the template is used).
Categories that apply to the template itself should be added to the bottom of the /doc subpage, inside <includeonly> tags.
If the documentation page contains <includeonly> or <noinclude> tags as part of the visible documentation text, replace the "<code><</code>" with "<code>&lt;</code>".
===Heading===
When in the Template namespace, this template shows this heading:
:[[File:Test Template Info-Icon - Version (2).svg|32px|link=[[w:Wikipedia:Template documentation]]]] '''Template documentation'''
In most other namespaces, such as "{{SITENAME}}:", it shows this heading:
:'''Documentation'''
But when on File (image) pages it shows this heading:
:'''Summary'''
The '''heading''' parameter can be used to set the heading to something else. Like this:
:<code><nowiki>{{Documentation |heading=Infobox documentation}}</nowiki></code>
If the '''heading''' parameter is empty but defined, no heading is shown and no [edit] [purge] links are shown. Like this:
:<code><nowiki>{{Documentation |heading=}}</nowiki></code>
The '''heading-style''' parameter can be fed optional [[w:Cascading Style Sheets|CSS]] values. Without quotation marks <code>" "</code> but with the ending semicolons <code>;</code>. For example:
:<code>heading-style=font-size:150%;color:red;</code>
===Link box===
Below the big doc box is a small link box that shows some meta-data about the documentation. The link box shows different things depending on what parameters are fed to this template, and in which namespace it is used. In some cases the link box is not shown at all.
To hide the link box, add the parameter
: <nowiki>|link box=off</nowiki>.
You can also insert customised text into the link box, by setting the <nowiki>|link box=</nowiki> parameter. For example:
<pre style="width:auto; overflow:scroll">
|link box=This documentation is automatically generated by [[w:Template:Country showdata]]
</pre>
===Automatic functions===
If the documentation page does not exist, the [create] link includes a [[mw:Manual:Creating pages with preloaded text|preload]] page so that clicking it will pre-fill the edit form with the basic documentation page format. Preload text is also used for the /sandbox and /testcases [create] links.
===Subject namespaces vs. talk namespaces===
Terminology: ''Subject namespaces'' are the opposite of ''talk namespaces''. For instance "Template:" is the subject space of "Template talk:".
This template is usually placed in a subject namespace, within <noinclude> tags. But in some cases this template needs to be on the talk page:
* In the Mediawiki namespace, since <noinclude> often does not work in system messages, and since the Mediawiki namespace needs to be kept clean for performance reasons.
When placed on talk pages, this template usually is placed near the top of the page and without <noinclude> tags.
The /doc, /sandbox and /testcases pages should normally be in the subject namespace, except in the namespaces that do not have the MediaWiki [[w:m:Help:Link#Subpage feature|subpage feature]] enabled: Main, File, Mediawiki and Category. (But currently we only show the /sandbox and /testcases links from User, User talk, Template and Template talk namespaces.) There are also a whole bunch of other technical reasons why the /doc page must be stored under the talk page for those (but only those) namespaces.
This template automatically points its [create] links for the /doc, /sandbox and /testcases to the right namespace.
===Technical details===
The preload page for the /doc [create] link is [[Template:Documentation/preload]]. The preload pages for the /sandbox and /testcases [create] links are [[Template:Documentation/preload-sandbox]] and [[Template:Documentation/preload-testcases]]. The preload page for the /sandbox [mirror] link is [[Template:Documentation/mirror]].
====Full syntax====
<pre>
{{Documentation}}
{{Documentation
| content =
}}
{{Documentation
| [path to documentation page]
| heading-style =
| heading =
| link box =
}}
</pre>
===See also===
* {{tl|Documentation subpage}}, a notice placed at the top of a /doc subpage explaining its role and including a link to the page it documents.
* [[w:Wikipedia:Template documentation]] is a how-to guide to template documentation.
* [[w:Wikipedia:Template sandbox and test cases]] explains the use of /sandbox and /testcases subpages and includes more information about template testing.
<includeonly>[[Category:Documentation templates]]</includeonly>
a653fcc94dcdcb2223758749be58d805327597b5
60
51
2024-08-06T06:54:11Z
Peerkartosh
2
wikitext
text/x-wiki
This is the {{tl|Documentation}} template, used on almost every template page to contain that template's documented instructions and information. You may want to use {{tl|Simple documentation}} instead, which uses a different style and fewer dependencies.
This template displays a green documentation box like you are seeing now and automatically loads the content from a /doc subpage. It can also load the content from other places if instructed to.
This template is intended for documenting templates and other pages that are [[mw:Transclusion|transcluded]] onto other pages.
Use of this template allows templates to be [[mw:Help:Protection|protected]] where necessary, while allowing anyone to edit the documentation and categories.
===Usage===
Normally this template is used without any parameters, placed at the bottom of the template or page being documented, within a <noinclude> container:
<syntaxhighlight lang="xml+smarty">
<!--Last line of your template code--><noinclude>
{{Documentation}}
<!-- Add categories to the /doc subpage, interwikis to Wikidata, not here -->
</noinclude>
</syntaxhighlight>
Then this template automatically loads the content from the /doc subpage of the template it is used on, along with automatically transcluding {{tl|How to export}}. To hide the instructions from {{tl|How to export}}, set the parameter <code>noexportinstructions</code> to <code>yes</code>
This template can also load the content from any other page. Like this:
<syntaxhighlight lang="xml+smarty">
<!--Last line of your template code--><noinclude>
{{Documentation |Template:Other page/doc}}
</noinclude>
</syntaxhighlight>
Note that when loading the documentation from a page other than the local /doc page it becomes tricky to handle the categories.
The content can also be fed directly as text. Like this:
<syntaxhighlight lang="xml+smarty">
<!--Last line of your template code--><noinclude>
{{Documentation
| content =
(some documentation)
}}</noinclude>
</syntaxhighlight>
When the <nowiki>|content=</nowiki> parameter is used, the doc box normally does not show the [edit] [purge] links in the top right corner. Note that if the /doc page exists, a link to it is still shown in the link box below the doc box.
Parameter <nowiki>|1=</nowiki> and the <nowiki>|content=</nowiki> parameter can also be combined, like this:
<syntaxhighlight lang="xml+smarty">
<!--Last line of your template code--><noinclude>
{{Documentation |1=Template:Any page/doc
| content =
{{Template:Any page/doc |parameters}}
}}</noinclude>
</syntaxhighlight>
Then the pagename fed as parameter 1 is used for the [edit] [purge] links and for the /doc link in the link box below the doc box. But the '''content''' parameter is used for the content shown in the doc box. The above code means that the content is transcluded as {{tlx|Any page/doc|parameters}}. In this example a parameter is also fed to the /doc page being loaded.
=== Shortcut ===
To automatically insert the [[w:Wikipedia:Noinclude|noinclude tags]], the template call and the guiding comment, use this [[w:WP:Substitution|substitution]] code:<br>
:<code><nowiki>{{subst:doc-code}}</nowiki></code>
===Best practice===
The code should be added at the bottom of the template code, with no space before <noinclude> (which would cause extra space on pages where the template is used).
Categories that apply to the template itself should be added to the bottom of the /doc subpage, inside <includeonly> tags.
If the documentation page contains <includeonly> or <noinclude> tags as part of the visible documentation text, replace the "<code><</code>" with "<code>&lt;</code>".
===Heading===
When in the Template namespace, this template shows this heading:
:[[File:Test Template Info-Icon - Version (2).svg|32px|link=[[w:Wikipedia:Template documentation]]]] '''Template documentation'''
In most other namespaces, such as "{{SITENAME}}:", it shows this heading:
:'''Documentation'''
But when on File (image) pages it shows this heading:
:'''Summary'''
The '''heading''' parameter can be used to set the heading to something else. Like this:
:<code><nowiki>{{Documentation |heading=Infobox documentation}}</nowiki></code>
If the '''heading''' parameter is empty but defined, no heading is shown and no [edit] [purge] links are shown. Like this:
:<code><nowiki>{{Documentation |heading=}}</nowiki></code>
The '''heading-style''' parameter can be fed optional [[w:Cascading Style Sheets|CSS]] values. Without quotation marks <code>" "</code> but with the ending semicolons <code>;</code>. For example:
:<code>heading-style=font-size:150%;color:red;</code>
===Link box===
Below the big doc box is a small link box that shows some meta-data about the documentation. The link box shows different things depending on what parameters are fed to this template, and in which namespace it is used. In some cases the link box is not shown at all.
To hide the link box, add the parameter
: <nowiki>|link box=off</nowiki>.
You can also insert customised text into the link box, by setting the <nowiki>|link box=</nowiki> parameter. For example:
<pre style="width:auto; overflow:scroll">
|link box=This documentation is automatically generated by [[w:Template:Country showdata]]
</pre>
===Automatic functions===
If the documentation page does not exist, the [create] link includes a [[mw:Manual:Creating pages with preloaded text|preload]] page so that clicking it will pre-fill the edit form with the basic documentation page format. Preload text is also used for the /sandbox and /testcases [create] links.
===Subject namespaces vs. talk namespaces===
Terminology: ''Subject namespaces'' are the opposite of ''talk namespaces''. For instance "Template:" is the subject space of "Template talk:".
This template is usually placed in a subject namespace, within <noinclude> tags. But in some cases this template needs to be on the talk page:
* In the Mediawiki namespace, since <noinclude> often does not work in system messages, and since the Mediawiki namespace needs to be kept clean for performance reasons.
When placed on talk pages, this template usually is placed near the top of the page and without <noinclude> tags.
The /doc, /sandbox and /testcases pages should normally be in the subject namespace, except in the namespaces that do not have the MediaWiki [[w:m:Help:Link#Subpage feature|subpage feature]] enabled: Main, File, Mediawiki and Category. (But currently we only show the /sandbox and /testcases links from User, User talk, Template and Template talk namespaces.) There are also a whole bunch of other technical reasons why the /doc page must be stored under the talk page for those (but only those) namespaces.
This template automatically points its [create] links for the /doc, /sandbox and /testcases to the right namespace.
===Technical details===
The preload page for the /doc [create] link is [[Template:Documentation/preload]]. The preload pages for the /sandbox and /testcases [create] links are [[Template:Documentation/preload-sandbox]] and [[Template:Documentation/preload-testcases]]. The preload page for the /sandbox [mirror] link is [[Template:Documentation/mirror]].
====Full syntax====
<pre>
{{Documentation}}
{{Documentation
| content =
}}
{{Documentation
| [path to documentation page]
| heading-style =
| heading =
| link box =
}}
</pre>
===See also===
* {{tl|Documentation subpage}}, a notice placed at the top of a /doc subpage explaining its role and including a link to the page it documents.
* [[w:Wikipedia:Template documentation]] is a how-to guide to template documentation.
* [[w:Wikipedia:Template sandbox and test cases]] explains the use of /sandbox and /testcases subpages and includes more information about template testing.
<includeonly>[[Category:Documentation templates]]</includeonly>
4bb26684a356374772d31cfe1fe544210706c848
Template:Documentation
10
26
46
2024-07-01T21:58:00Z
dev>Pppery
0
Move {{how to export}} to the module so it can have smarter logic
wikitext
text/x-wiki
{{#invoke:documentation|main|_content={{ {{#invoke:documentation|contentTitle}}}}}}<noinclude>
<!-- Add categories to the /doc subpage -->
</noinclude>
9e62b964e96c4e3d478edecbfcb3c0338ae8a276
47
46
2024-08-06T06:33:40Z
Peerkartosh
2
1 revision imported from [[:dev:Template:Documentation]]
wikitext
text/x-wiki
{{#invoke:documentation|main|_content={{ {{#invoke:documentation|contentTitle}}}}}}<noinclude>
<!-- Add categories to the /doc subpage -->
</noinclude>
9e62b964e96c4e3d478edecbfcb3c0338ae8a276
Module:Documentation
828
24
42
2024-07-01T22:05:57Z
dev>Pppery
0
Fix
Scribunto
text/plain
-- This module implements {{documentation}}.
-- Get required modules.
local getArgs = require('Module:Arguments').getArgs
-- Get the config table.
local cfg = mw.loadData('Module:Documentation/config')
local p = {}
-- Often-used functions.
local ugsub = mw.ustring.gsub
----------------------------------------------------------------------------
-- Helper functions
--
-- These are defined as local functions, but are made available in the p
-- table for testing purposes.
----------------------------------------------------------------------------
local function message(cfgKey, valArray, expectType)
--[[
-- Gets a message from the cfg table and formats it if appropriate.
-- The function raises an error if the value from the cfg table is not
-- of the type expectType. The default type for expectType is 'string'.
-- If the table valArray is present, strings such as $1, $2 etc. in the
-- message are substituted with values from the table keys [1], [2] etc.
-- For example, if the message "foo-message" had the value 'Foo $2 bar $1.',
-- message('foo-message', {'baz', 'qux'}) would return "Foo qux bar baz."
--]]
local msg = cfg[cfgKey]
expectType = expectType or 'string'
if type(msg) ~= expectType then
error('message: type error in message cfg.' .. cfgKey .. ' (' .. expectType .. ' expected, got ' .. type(msg) .. ')', 2)
end
if not valArray then
return msg
end
local function getMessageVal(match)
match = tonumber(match)
return valArray[match] or error('message: no value found for key $' .. match .. ' in message cfg.' .. cfgKey, 4)
end
return ugsub(msg, '$([1-9][0-9]*)', getMessageVal)
end
p.message = message
local function makeWikilink(page, display)
if display then
return mw.ustring.format('[[%s|%s]]', page, display)
else
return mw.ustring.format('[[%s]]', page)
end
end
p.makeWikilink = makeWikilink
local function makeCategoryLink(cat, sort)
local catns = mw.site.namespaces[14].name
return makeWikilink(catns .. ':' .. cat, sort)
end
p.makeCategoryLink = makeCategoryLink
local function makeUrlLink(url, display)
return mw.ustring.format('[%s %s]', url, display)
end
p.makeUrlLink = makeUrlLink
local function makeToolbar(...)
local ret = {}
local lim = select('#', ...)
if lim < 1 then
return nil
end
for i = 1, lim do
ret[#ret + 1] = select(i, ...)
end
-- 'documentation-toolbar'
return '<span class="' .. message('toolbar-class') .. '">('
.. table.concat(ret, ' | ') .. ')</span>'
end
p.makeToolbar = makeToolbar
----------------------------------------------------------------------------
-- Argument processing
----------------------------------------------------------------------------
local function makeInvokeFunc(funcName)
return function (frame)
local args = getArgs(frame, {
valueFunc = function (key, value)
if type(value) == 'string' then
value = value:match('^%s*(.-)%s*$') -- Remove whitespace.
if key == 'heading' or value ~= '' then
return value
else
return nil
end
else
return value
end
end
})
return p[funcName](args)
end
end
----------------------------------------------------------------------------
-- Entry points
----------------------------------------------------------------------------
function p.nonexistent(frame)
if mw.title.getCurrentTitle().subpageText == 'testcases' then
return frame:expandTemplate{title = 'module test cases notice'}
else
return p.main(frame)
end
end
p.main = makeInvokeFunc('_main')
function p._main(args)
--[[
-- This function defines logic flow for the module.
-- @args - table of arguments passed by the user
--]]
local env = p.getEnvironment(args)
local root = mw.html.create()
root
:tag('div')
-- 'documentation-container'
:addClass(message('container'))
:attr('role', 'complementary')
:attr('aria-labelledby', args.heading ~= '' and 'documentation-heading' or nil)
:attr('aria-label', args.heading == '' and 'Documentation' or nil)
:newline()
:tag('div')
-- 'documentation'
:addClass(message('main-div-classes'))
:newline()
:wikitext(p._startBox(args, env))
:wikitext(p._content(args, env))
:tag('div')
-- 'documentation-clear'
:addClass(message('clear'))
:done()
:newline()
:done()
:wikitext(p._endBox(args, env))
:done()
:wikitext(p.addTrackingCategories(env))
-- 'Module:Documentation/styles.css'
return mw.getCurrentFrame():extensionTag (
'templatestyles', '', {src=cfg['templatestyles']
}) .. tostring(root)
end
----------------------------------------------------------------------------
-- Environment settings
----------------------------------------------------------------------------
function p.getEnvironment(args)
--[[
-- Returns a table with information about the environment, including title
-- objects and other namespace- or path-related data.
-- @args - table of arguments passed by the user
--
-- Title objects include:
-- env.title - the page we are making documentation for (usually the current title)
-- env.templateTitle - the template (or module, file, etc.)
-- env.docTitle - the /doc subpage.
-- env.sandboxTitle - the /sandbox subpage.
-- env.testcasesTitle - the /testcases subpage.
--
-- Data includes:
-- env.subjectSpace - the number of the title's subject namespace.
-- env.docSpace - the number of the namespace the title puts its documentation in.
-- env.docpageBase - the text of the base page of the /doc, /sandbox and /testcases pages, with namespace.
-- env.compareUrl - URL of the Special:ComparePages page comparing the sandbox with the template.
--
-- All table lookups are passed through pcall so that errors are caught. If an error occurs, the value
-- returned will be nil.
--]]
local env, envFuncs = {}, {}
-- Set up the metatable. If triggered we call the corresponding function in the envFuncs table. The value
-- returned by that function is memoized in the env table so that we don't call any of the functions
-- more than once. (Nils won't be memoized.)
setmetatable(env, {
__index = function (t, key)
local envFunc = envFuncs[key]
if envFunc then
local success, val = pcall(envFunc)
if success then
env[key] = val -- Memoise the value.
return val
end
end
return nil
end
})
function envFuncs.title()
-- The title object for the current page, or a test page passed with args.page.
local title
local titleArg = args.page
if titleArg then
title = mw.title.new(titleArg)
else
title = mw.title.getCurrentTitle()
end
return title
end
function envFuncs.templateTitle()
--[[
-- The template (or module, etc.) title object.
-- Messages:
-- 'sandbox-subpage' --> 'sandbox'
-- 'testcases-subpage' --> 'testcases'
--]]
local subjectSpace = env.subjectSpace
local title = env.title
local subpage = title.subpageText
if subpage == message('sandbox-subpage') or subpage == message('testcases-subpage') then
return mw.title.makeTitle(subjectSpace, title.baseText)
else
return mw.title.makeTitle(subjectSpace, title.text)
end
end
function envFuncs.docTitle()
--[[
-- Title object of the /doc subpage.
-- Messages:
-- 'doc-subpage' --> 'doc'
--]]
local title = env.title
local docname = args[1] -- User-specified doc page.
local docpage
if docname then
docpage = docname
else
docpage = env.docpageBase .. '/' .. message('doc-subpage')
end
return mw.title.new(docpage)
end
function envFuncs.sandboxTitle()
--[[
-- Title object for the /sandbox subpage.
-- Messages:
-- 'sandbox-subpage' --> 'sandbox'
--]]
return mw.title.new(env.docpageBase .. '/' .. message('sandbox-subpage'))
end
function envFuncs.testcasesTitle()
--[[
-- Title object for the /testcases subpage.
-- Messages:
-- 'testcases-subpage' --> 'testcases'
--]]
return mw.title.new(env.docpageBase .. '/' .. message('testcases-subpage'))
end
function envFuncs.subjectSpace()
-- The subject namespace number.
return mw.site.namespaces[env.title.namespace].subject.id
end
function envFuncs.docSpace()
-- The documentation namespace number. For most namespaces this is the
-- same as the subject namespace. However, pages in the Article, File,
-- MediaWiki or Category namespaces must have their /doc, /sandbox and
-- /testcases pages in talk space.
local subjectSpace = env.subjectSpace
if subjectSpace == 0 or subjectSpace == 6 or subjectSpace == 8 or subjectSpace == 14 then
return subjectSpace + 1
else
return subjectSpace
end
end
function envFuncs.docpageBase()
-- The base page of the /doc, /sandbox, and /testcases subpages.
-- For some namespaces this is the talk page, rather than the template page.
local templateTitle = env.templateTitle
local docSpace = env.docSpace
local docSpaceText = mw.site.namespaces[docSpace].name
-- Assemble the link. docSpace is never the main namespace, so we can hardcode the colon.
return docSpaceText .. ':' .. templateTitle.text
end
function envFuncs.compareUrl()
-- Diff link between the sandbox and the main template using [[Special:ComparePages]].
local templateTitle = env.templateTitle
local sandboxTitle = env.sandboxTitle
if templateTitle.exists and sandboxTitle.exists then
local compareUrl = mw.uri.fullUrl(
'Special:ComparePages',
{ page1 = templateTitle.prefixedText, page2 = sandboxTitle.prefixedText}
)
return tostring(compareUrl)
else
return nil
end
end
return env
end
----------------------------------------------------------------------------
-- Start box
----------------------------------------------------------------------------
p.startBox = makeInvokeFunc('_startBox')
function p._startBox(args, env)
--[[
-- This function generates the start box.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- The actual work is done by p.makeStartBoxLinksData and p.renderStartBoxLinks which make
-- the [view] [edit] [history] [purge] links, and by p.makeStartBoxData and p.renderStartBox
-- which generate the box HTML.
--]]
env = env or p.getEnvironment(args)
local links
local content = args.content
if not content or args[1] then
-- No need to include the links if the documentation is on the template page itself.
local linksData = p.makeStartBoxLinksData(args, env)
if linksData then
links = p.renderStartBoxLinks(linksData)
end
end
-- Generate the start box html.
local data = p.makeStartBoxData(args, env, links)
if data then
return p.renderStartBox(data)
else
-- User specified no heading.
return nil
end
end
function p.makeStartBoxLinksData(args, env)
--[[
-- Does initial processing of data to make the [view] [edit] [history] [purge] links.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- Messages:
-- 'view-link-display' --> 'view'
-- 'edit-link-display' --> 'edit'
-- 'history-link-display' --> 'history'
-- 'purge-link-display' --> 'purge'
-- 'module-preload' --> 'Template:Documentation/preload-module-doc'
-- 'docpage-preload' --> 'Template:Documentation/preload'
-- 'create-link-display' --> 'create'
--]]
local subjectSpace = env.subjectSpace
local title = env.title
local docTitle = env.docTitle
if not title or not docTitle then
return nil
end
if docTitle.isRedirect then
docTitle = docTitle.redirectTarget
end
local data = {}
data.title = title
data.docTitle = docTitle
-- View, display, edit, and purge links if /doc exists.
data.viewLinkDisplay = message('view-link-display')
data.editLinkDisplay = message('edit-link-display')
data.historyLinkDisplay = message('history-link-display')
data.purgeLinkDisplay = message('purge-link-display')
-- Create link if /doc doesn't exist.
local preload = args.preload
if not preload then
if subjectSpace == 828 then -- Module namespace
preload = message('module-preload')
else
preload = message('docpage-preload')
end
end
data.preload = preload
data.createLinkDisplay = message('create-link-display')
return data
end
function p.renderStartBoxLinks(data)
--[[
-- Generates the [view][edit][history][purge] or [create][purge] links from the data table.
-- @data - a table of data generated by p.makeStartBoxLinksData
--]]
local function escapeBrackets(s)
-- Escapes square brackets with HTML entities.
s = s:gsub('%[', '[') -- Replace square brackets with HTML entities.
s = s:gsub('%]', ']')
return s
end
local ret
local docTitle = data.docTitle
local title = data.title
local purgeLink = makeUrlLink(title:fullUrl{action = 'purge'}, data.purgeLinkDisplay)
if docTitle.exists then
local viewLink = makeWikilink(docTitle.prefixedText, data.viewLinkDisplay)
local editLink = makeUrlLink(docTitle:fullUrl{action = 'edit'}, data.editLinkDisplay)
local historyLink = makeUrlLink(docTitle:fullUrl{action = 'history'}, data.historyLinkDisplay)
ret = '[%s] [%s] [%s] [%s]'
ret = escapeBrackets(ret)
ret = mw.ustring.format(ret, viewLink, editLink, historyLink, purgeLink)
else
local createLink = makeUrlLink(docTitle:fullUrl{action = 'edit', preload = data.preload}, data.createLinkDisplay)
ret = '[%s] [%s]'
ret = escapeBrackets(ret)
ret = mw.ustring.format(ret, createLink, purgeLink)
end
return ret
end
function p.makeStartBoxData(args, env, links)
--[=[
-- Does initial processing of data to pass to the start-box render function, p.renderStartBox.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
-- @links - a string containing the [view][edit][history][purge] links - could be nil if there's an error.
--
-- Messages:
-- 'documentation-icon-wikitext' --> '[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=]]'
-- 'template-namespace-heading' --> 'Template documentation'
-- 'module-namespace-heading' --> 'Module documentation'
-- 'file-namespace-heading' --> 'Summary'
-- 'other-namespaces-heading' --> 'Documentation'
-- 'testcases-create-link-display' --> 'create'
--]=]
local subjectSpace = env.subjectSpace
if not subjectSpace then
-- Default to an "other namespaces" namespace, so that we get at least some output
-- if an error occurs.
subjectSpace = 2
end
local data = {}
-- Heading
local heading = args.heading -- Blank values are not removed.
if heading == '' then
-- Don't display the start box if the heading arg is defined but blank.
return nil
end
if heading then
data.heading = heading
elseif subjectSpace == 10 then -- Template namespace
data.heading = message('documentation-icon-wikitext') .. ' ' .. message('template-namespace-heading')
elseif subjectSpace == 828 then -- Module namespace
data.heading = message('documentation-icon-wikitext') .. ' ' .. message('module-namespace-heading')
elseif subjectSpace == 6 then -- File namespace
data.heading = message('file-namespace-heading')
else
data.heading = message('other-namespaces-heading')
end
-- Heading CSS
local headingStyle = args['heading-style']
if headingStyle then
data.headingStyleText = headingStyle
else
-- 'documentation-heading'
data.headingClass = message('main-div-heading-class')
end
-- Data for the [view][edit][history][purge] or [create] links.
if links then
-- 'mw-editsection-like plainlinks'
data.linksClass = message('start-box-link-classes')
data.links = links
end
return data
end
function p.renderStartBox(data)
-- Renders the start box html.
-- @data - a table of data generated by p.makeStartBoxData.
local sbox = mw.html.create('div')
sbox
-- 'documentation-startbox'
:addClass(message('start-box-class'))
:newline()
:tag('span')
:addClass(data.headingClass)
:attr('id', 'documentation-heading')
:cssText(data.headingStyleText)
:wikitext(data.heading)
local links = data.links
if links then
sbox:tag('span')
:addClass(data.linksClass)
:attr('id', data.linksId)
:wikitext(links)
end
return tostring(sbox)
end
----------------------------------------------------------------------------
-- Documentation content
----------------------------------------------------------------------------
p.content = makeInvokeFunc('_content')
function p._content(args, env)
-- Displays the documentation contents
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
env = env or p.getEnvironment(args)
local docTitle = env.docTitle
local content = args.content
if not content and docTitle and docTitle.exists then
content = args._content or mw.getCurrentFrame():expandTemplate{title = docTitle.prefixedText}
end
if mw.site.siteName == "Miraheze Developers Wiki" and args.noexportinstructions ~= "yes" then
local export = mw.getCurrentFrame():expandTemplate{title="How to export"}
content = export .. "<br/>" .. (content or '')
end
-- The line breaks below are necessary so that "=== Headings ===" at the start and end
-- of docs are interpreted correctly.
return '\n' .. (content or '') .. '\n'
end
p.contentTitle = makeInvokeFunc('_contentTitle')
function p._contentTitle(args, env)
env = env or p.getEnvironment(args)
local docTitle = env.docTitle
if not args.content and docTitle and docTitle.exists then
return docTitle.prefixedText
else
return ''
end
end
----------------------------------------------------------------------------
-- End box
----------------------------------------------------------------------------
p.endBox = makeInvokeFunc('_endBox')
function p._endBox(args, env)
--[=[
-- This function generates the end box (also known as the link box).
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
--]=]
-- Get environment data.
env = env or p.getEnvironment(args)
local subjectSpace = env.subjectSpace
local docTitle = env.docTitle
if not subjectSpace or not docTitle then
return nil
end
-- Check whether we should output the end box at all. Add the end
-- box by default if the documentation exists or if we are in the
-- user, module or template namespaces.
local linkBox = args['link box']
if linkBox == 'off'
or not (
docTitle.exists
or subjectSpace == 2
or subjectSpace == 828
or subjectSpace == 10
)
then
return nil
end
-- Assemble the link box.
local text = ''
if linkBox then
text = text .. linkBox
else
text = text .. (p.makeDocPageBlurb(args, env) or '') -- "This documentation is transcluded from [[Foo]]."
if subjectSpace == 2 or subjectSpace == 10 or subjectSpace == 828 then
-- We are in the user, template or module namespaces.
-- Add sandbox and testcases links.
-- "Editors can experiment in this template's sandbox and testcases pages."
text = text .. (p.makeExperimentBlurb(args, env) or '') .. '<br />'
if not args.content and not args[1] then
-- "Please add categories to the /doc subpage."
-- Don't show this message with inline docs or with an explicitly specified doc page,
-- as then it is unclear where to add the categories.
text = text .. (p.makeCategoriesBlurb(args, env) or '')
end
text = text .. ' ' .. (p.makeSubpagesBlurb(args, env) or '') --"Subpages of this template"
end
end
local box = mw.html.create('div')
-- 'documentation-metadata'
box:attr('role', 'note')
:addClass(message('end-box-class'))
-- 'plainlinks'
:addClass(message('end-box-plainlinks'))
:wikitext(text)
:done()
return '\n' .. tostring(box)
end
function p.makeDocPageBlurb(args, env)
--[=[
-- Makes the blurb "This documentation is transcluded from [[Template:Foo]] (edit, history)".
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- Messages:
-- 'edit-link-display' --> 'edit'
-- 'history-link-display' --> 'history'
-- 'transcluded-from-blurb' -->
-- 'The above [[Wikipedia:Template documentation|documentation]]
-- is [[Help:Transclusion|transcluded]] from $1.'
-- 'module-preload' --> 'Template:Documentation/preload-module-doc'
-- 'create-link-display' --> 'create'
-- 'create-module-doc-blurb' -->
-- 'You might want to $1 a documentation page for this [[Wikipedia:Lua|Scribunto module]].'
--]=]
local docTitle = env.docTitle
if not docTitle then
return nil
end
local ret
if docTitle.exists then
-- /doc exists; link to it.
local docLink = makeWikilink(docTitle.prefixedText)
local editUrl = docTitle:fullUrl{action = 'edit'}
local editDisplay = message('edit-link-display')
local editLink = makeUrlLink(editUrl, editDisplay)
local historyUrl = docTitle:fullUrl{action = 'history'}
local historyDisplay = message('history-link-display')
local historyLink = makeUrlLink(historyUrl, historyDisplay)
ret = message('transcluded-from-blurb', {docLink})
.. ' '
.. makeToolbar(editLink, historyLink)
.. '<br />'
elseif env.subjectSpace == 828 then
-- /doc does not exist; ask to create it.
local createUrl = docTitle:fullUrl{action = 'edit', preload = message('module-preload')}
local createDisplay = message('create-link-display')
local createLink = makeUrlLink(createUrl, createDisplay)
ret = message('create-module-doc-blurb', {createLink})
.. '<br />'
end
return ret
end
function p.makeExperimentBlurb(args, env)
--[[
-- Renders the text "Editors can experiment in this template's sandbox (edit | diff) and testcases (edit) pages."
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- Messages:
-- 'sandbox-link-display' --> 'sandbox'
-- 'sandbox-edit-link-display' --> 'edit'
-- 'compare-link-display' --> 'diff'
-- 'module-sandbox-preload' --> 'Template:Documentation/preload-module-sandbox'
-- 'template-sandbox-preload' --> 'Template:Documentation/preload-sandbox'
-- 'sandbox-create-link-display' --> 'create'
-- 'mirror-edit-summary' --> 'Create sandbox version of $1'
-- 'mirror-link-display' --> 'mirror'
-- 'mirror-link-preload' --> 'Template:Documentation/mirror'
-- 'sandbox-link-display' --> 'sandbox'
-- 'testcases-link-display' --> 'testcases'
-- 'testcases-edit-link-display'--> 'edit'
-- 'template-sandbox-preload' --> 'Template:Documentation/preload-sandbox'
-- 'testcases-create-link-display' --> 'create'
-- 'testcases-link-display' --> 'testcases'
-- 'testcases-edit-link-display' --> 'edit'
-- 'module-testcases-preload' --> 'Template:Documentation/preload-module-testcases'
-- 'template-testcases-preload' --> 'Template:Documentation/preload-testcases'
-- 'experiment-blurb-module' --> 'Editors can experiment in this module's $1 and $2 pages.'
-- 'experiment-blurb-template' --> 'Editors can experiment in this template's $1 and $2 pages.'
--]]
local subjectSpace = env.subjectSpace
local templateTitle = env.templateTitle
local sandboxTitle = env.sandboxTitle
local testcasesTitle = env.testcasesTitle
local templatePage = templateTitle.prefixedText
if not subjectSpace or not templateTitle or not sandboxTitle or not testcasesTitle then
return nil
end
-- Make links.
local sandboxLinks, testcasesLinks
if sandboxTitle.exists then
local sandboxPage = sandboxTitle.prefixedText
local sandboxDisplay = message('sandbox-link-display')
local sandboxLink = makeWikilink(sandboxPage, sandboxDisplay)
local sandboxEditUrl = sandboxTitle:fullUrl{action = 'edit'}
local sandboxEditDisplay = message('sandbox-edit-link-display')
local sandboxEditLink = makeUrlLink(sandboxEditUrl, sandboxEditDisplay)
local compareUrl = env.compareUrl
local compareLink
if compareUrl then
local compareDisplay = message('compare-link-display')
compareLink = makeUrlLink(compareUrl, compareDisplay)
end
sandboxLinks = sandboxLink .. ' ' .. makeToolbar(sandboxEditLink, compareLink)
else
local sandboxPreload
if subjectSpace == 828 then
sandboxPreload = message('module-sandbox-preload')
else
sandboxPreload = message('template-sandbox-preload')
end
local sandboxCreateUrl = sandboxTitle:fullUrl{action = 'edit', preload = sandboxPreload}
local sandboxCreateDisplay = message('sandbox-create-link-display')
local sandboxCreateLink = makeUrlLink(sandboxCreateUrl, sandboxCreateDisplay)
local mirrorSummary = message('mirror-edit-summary', {makeWikilink(templatePage)})
local mirrorPreload = message('mirror-link-preload')
local mirrorUrl = sandboxTitle:fullUrl{action = 'edit', preload = mirrorPreload, summary = mirrorSummary}
if subjectSpace == 828 then
mirrorUrl = sandboxTitle:fullUrl{action = 'edit', preload = templateTitle.prefixedText, summary = mirrorSummary}
end
local mirrorDisplay = message('mirror-link-display')
local mirrorLink = makeUrlLink(mirrorUrl, mirrorDisplay)
sandboxLinks = message('sandbox-link-display') .. ' ' .. makeToolbar(sandboxCreateLink, mirrorLink)
end
if testcasesTitle.exists then
local testcasesPage = testcasesTitle.prefixedText
local testcasesDisplay = message('testcases-link-display')
local testcasesLink = makeWikilink(testcasesPage, testcasesDisplay)
local testcasesEditUrl = testcasesTitle:fullUrl{action = 'edit'}
local testcasesEditDisplay = message('testcases-edit-link-display')
local testcasesEditLink = makeUrlLink(testcasesEditUrl, testcasesEditDisplay)
-- for Modules, add testcases run link if exists
if testcasesTitle.contentModel == "Scribunto" and testcasesTitle.talkPageTitle and testcasesTitle.talkPageTitle.exists then
local testcasesRunLinkDisplay = message('testcases-run-link-display')
local testcasesRunLink = makeWikilink(testcasesTitle.talkPageTitle.prefixedText, testcasesRunLinkDisplay)
testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink, testcasesRunLink)
else
testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink)
end
else
local testcasesPreload
if subjectSpace == 828 then
testcasesPreload = message('module-testcases-preload')
else
testcasesPreload = message('template-testcases-preload')
end
local testcasesCreateUrl = testcasesTitle:fullUrl{action = 'edit', preload = testcasesPreload}
local testcasesCreateDisplay = message('testcases-create-link-display')
local testcasesCreateLink = makeUrlLink(testcasesCreateUrl, testcasesCreateDisplay)
testcasesLinks = message('testcases-link-display') .. ' ' .. makeToolbar(testcasesCreateLink)
end
local messageName
if subjectSpace == 828 then
messageName = 'experiment-blurb-module'
else
messageName = 'experiment-blurb-template'
end
return message(messageName, {sandboxLinks, testcasesLinks})
end
function p.makeCategoriesBlurb(args, env)
--[[
-- Generates the text "Please add categories to the /doc subpage."
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
-- Messages:
-- 'doc-link-display' --> '/doc'
-- 'add-categories-blurb' --> 'Please add categories to the $1 subpage.'
--]]
local docTitle = env.docTitle
if not docTitle then
return nil
end
local docPathLink = makeWikilink(docTitle.prefixedText, message('doc-link-display'))
return message('add-categories-blurb', {docPathLink})
end
function p.makeSubpagesBlurb(args, env)
--[[
-- Generates the "Subpages of this template" link.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
-- Messages:
-- 'template-pagetype' --> 'template'
-- 'module-pagetype' --> 'module'
-- 'default-pagetype' --> 'page'
-- 'subpages-link-display' --> 'Subpages of this $1'
--]]
local subjectSpace = env.subjectSpace
local templateTitle = env.templateTitle
if not subjectSpace or not templateTitle then
return nil
end
local pagetype
if subjectSpace == 10 then
pagetype = message('template-pagetype')
elseif subjectSpace == 828 then
pagetype = message('module-pagetype')
else
pagetype = message('default-pagetype')
end
local subpagesLink = makeWikilink(
'Special:PrefixIndex/' .. templateTitle.prefixedText .. '/',
message('subpages-link-display', {pagetype})
)
return message('subpages-blurb', {subpagesLink})
end
----------------------------------------------------------------------------
-- Tracking categories
----------------------------------------------------------------------------
function p.addTrackingCategories(env)
--[[
-- Check if {{documentation}} is transcluded on a /doc or /testcases page.
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
-- Messages:
-- 'display-strange-usage-category' --> true
-- 'doc-subpage' --> 'doc'
-- 'testcases-subpage' --> 'testcases'
-- 'strange-usage-category' --> 'Wikipedia pages with strange ((documentation)) usage'
--
-- /testcases pages in the module namespace are not categorised, as they may have
-- {{documentation}} transcluded automatically.
--]]
local title = env.title
local subjectSpace = env.subjectSpace
if not title or not subjectSpace then
return nil
end
local subpage = title.subpageText
local ret = ''
if message('display-strange-usage-category', nil, 'boolean')
and (
subpage == message('doc-subpage')
or subjectSpace ~= 828 and subpage == message('testcases-subpage')
)
then
ret = ret .. makeCategoryLink(message('strange-usage-category'))
end
return ret
end
return p
63afd4d0af80d47297a29efe2a2dfec0df691d22
43
42
2024-08-06T06:32:31Z
Peerkartosh
2
1 revision imported from [[:dev:Module:Documentation]]
Scribunto
text/plain
-- This module implements {{documentation}}.
-- Get required modules.
local getArgs = require('Module:Arguments').getArgs
-- Get the config table.
local cfg = mw.loadData('Module:Documentation/config')
local p = {}
-- Often-used functions.
local ugsub = mw.ustring.gsub
----------------------------------------------------------------------------
-- Helper functions
--
-- These are defined as local functions, but are made available in the p
-- table for testing purposes.
----------------------------------------------------------------------------
local function message(cfgKey, valArray, expectType)
--[[
-- Gets a message from the cfg table and formats it if appropriate.
-- The function raises an error if the value from the cfg table is not
-- of the type expectType. The default type for expectType is 'string'.
-- If the table valArray is present, strings such as $1, $2 etc. in the
-- message are substituted with values from the table keys [1], [2] etc.
-- For example, if the message "foo-message" had the value 'Foo $2 bar $1.',
-- message('foo-message', {'baz', 'qux'}) would return "Foo qux bar baz."
--]]
local msg = cfg[cfgKey]
expectType = expectType or 'string'
if type(msg) ~= expectType then
error('message: type error in message cfg.' .. cfgKey .. ' (' .. expectType .. ' expected, got ' .. type(msg) .. ')', 2)
end
if not valArray then
return msg
end
local function getMessageVal(match)
match = tonumber(match)
return valArray[match] or error('message: no value found for key $' .. match .. ' in message cfg.' .. cfgKey, 4)
end
return ugsub(msg, '$([1-9][0-9]*)', getMessageVal)
end
p.message = message
local function makeWikilink(page, display)
if display then
return mw.ustring.format('[[%s|%s]]', page, display)
else
return mw.ustring.format('[[%s]]', page)
end
end
p.makeWikilink = makeWikilink
local function makeCategoryLink(cat, sort)
local catns = mw.site.namespaces[14].name
return makeWikilink(catns .. ':' .. cat, sort)
end
p.makeCategoryLink = makeCategoryLink
local function makeUrlLink(url, display)
return mw.ustring.format('[%s %s]', url, display)
end
p.makeUrlLink = makeUrlLink
local function makeToolbar(...)
local ret = {}
local lim = select('#', ...)
if lim < 1 then
return nil
end
for i = 1, lim do
ret[#ret + 1] = select(i, ...)
end
-- 'documentation-toolbar'
return '<span class="' .. message('toolbar-class') .. '">('
.. table.concat(ret, ' | ') .. ')</span>'
end
p.makeToolbar = makeToolbar
----------------------------------------------------------------------------
-- Argument processing
----------------------------------------------------------------------------
local function makeInvokeFunc(funcName)
return function (frame)
local args = getArgs(frame, {
valueFunc = function (key, value)
if type(value) == 'string' then
value = value:match('^%s*(.-)%s*$') -- Remove whitespace.
if key == 'heading' or value ~= '' then
return value
else
return nil
end
else
return value
end
end
})
return p[funcName](args)
end
end
----------------------------------------------------------------------------
-- Entry points
----------------------------------------------------------------------------
function p.nonexistent(frame)
if mw.title.getCurrentTitle().subpageText == 'testcases' then
return frame:expandTemplate{title = 'module test cases notice'}
else
return p.main(frame)
end
end
p.main = makeInvokeFunc('_main')
function p._main(args)
--[[
-- This function defines logic flow for the module.
-- @args - table of arguments passed by the user
--]]
local env = p.getEnvironment(args)
local root = mw.html.create()
root
:tag('div')
-- 'documentation-container'
:addClass(message('container'))
:attr('role', 'complementary')
:attr('aria-labelledby', args.heading ~= '' and 'documentation-heading' or nil)
:attr('aria-label', args.heading == '' and 'Documentation' or nil)
:newline()
:tag('div')
-- 'documentation'
:addClass(message('main-div-classes'))
:newline()
:wikitext(p._startBox(args, env))
:wikitext(p._content(args, env))
:tag('div')
-- 'documentation-clear'
:addClass(message('clear'))
:done()
:newline()
:done()
:wikitext(p._endBox(args, env))
:done()
:wikitext(p.addTrackingCategories(env))
-- 'Module:Documentation/styles.css'
return mw.getCurrentFrame():extensionTag (
'templatestyles', '', {src=cfg['templatestyles']
}) .. tostring(root)
end
----------------------------------------------------------------------------
-- Environment settings
----------------------------------------------------------------------------
function p.getEnvironment(args)
--[[
-- Returns a table with information about the environment, including title
-- objects and other namespace- or path-related data.
-- @args - table of arguments passed by the user
--
-- Title objects include:
-- env.title - the page we are making documentation for (usually the current title)
-- env.templateTitle - the template (or module, file, etc.)
-- env.docTitle - the /doc subpage.
-- env.sandboxTitle - the /sandbox subpage.
-- env.testcasesTitle - the /testcases subpage.
--
-- Data includes:
-- env.subjectSpace - the number of the title's subject namespace.
-- env.docSpace - the number of the namespace the title puts its documentation in.
-- env.docpageBase - the text of the base page of the /doc, /sandbox and /testcases pages, with namespace.
-- env.compareUrl - URL of the Special:ComparePages page comparing the sandbox with the template.
--
-- All table lookups are passed through pcall so that errors are caught. If an error occurs, the value
-- returned will be nil.
--]]
local env, envFuncs = {}, {}
-- Set up the metatable. If triggered we call the corresponding function in the envFuncs table. The value
-- returned by that function is memoized in the env table so that we don't call any of the functions
-- more than once. (Nils won't be memoized.)
setmetatable(env, {
__index = function (t, key)
local envFunc = envFuncs[key]
if envFunc then
local success, val = pcall(envFunc)
if success then
env[key] = val -- Memoise the value.
return val
end
end
return nil
end
})
function envFuncs.title()
-- The title object for the current page, or a test page passed with args.page.
local title
local titleArg = args.page
if titleArg then
title = mw.title.new(titleArg)
else
title = mw.title.getCurrentTitle()
end
return title
end
function envFuncs.templateTitle()
--[[
-- The template (or module, etc.) title object.
-- Messages:
-- 'sandbox-subpage' --> 'sandbox'
-- 'testcases-subpage' --> 'testcases'
--]]
local subjectSpace = env.subjectSpace
local title = env.title
local subpage = title.subpageText
if subpage == message('sandbox-subpage') or subpage == message('testcases-subpage') then
return mw.title.makeTitle(subjectSpace, title.baseText)
else
return mw.title.makeTitle(subjectSpace, title.text)
end
end
function envFuncs.docTitle()
--[[
-- Title object of the /doc subpage.
-- Messages:
-- 'doc-subpage' --> 'doc'
--]]
local title = env.title
local docname = args[1] -- User-specified doc page.
local docpage
if docname then
docpage = docname
else
docpage = env.docpageBase .. '/' .. message('doc-subpage')
end
return mw.title.new(docpage)
end
function envFuncs.sandboxTitle()
--[[
-- Title object for the /sandbox subpage.
-- Messages:
-- 'sandbox-subpage' --> 'sandbox'
--]]
return mw.title.new(env.docpageBase .. '/' .. message('sandbox-subpage'))
end
function envFuncs.testcasesTitle()
--[[
-- Title object for the /testcases subpage.
-- Messages:
-- 'testcases-subpage' --> 'testcases'
--]]
return mw.title.new(env.docpageBase .. '/' .. message('testcases-subpage'))
end
function envFuncs.subjectSpace()
-- The subject namespace number.
return mw.site.namespaces[env.title.namespace].subject.id
end
function envFuncs.docSpace()
-- The documentation namespace number. For most namespaces this is the
-- same as the subject namespace. However, pages in the Article, File,
-- MediaWiki or Category namespaces must have their /doc, /sandbox and
-- /testcases pages in talk space.
local subjectSpace = env.subjectSpace
if subjectSpace == 0 or subjectSpace == 6 or subjectSpace == 8 or subjectSpace == 14 then
return subjectSpace + 1
else
return subjectSpace
end
end
function envFuncs.docpageBase()
-- The base page of the /doc, /sandbox, and /testcases subpages.
-- For some namespaces this is the talk page, rather than the template page.
local templateTitle = env.templateTitle
local docSpace = env.docSpace
local docSpaceText = mw.site.namespaces[docSpace].name
-- Assemble the link. docSpace is never the main namespace, so we can hardcode the colon.
return docSpaceText .. ':' .. templateTitle.text
end
function envFuncs.compareUrl()
-- Diff link between the sandbox and the main template using [[Special:ComparePages]].
local templateTitle = env.templateTitle
local sandboxTitle = env.sandboxTitle
if templateTitle.exists and sandboxTitle.exists then
local compareUrl = mw.uri.fullUrl(
'Special:ComparePages',
{ page1 = templateTitle.prefixedText, page2 = sandboxTitle.prefixedText}
)
return tostring(compareUrl)
else
return nil
end
end
return env
end
----------------------------------------------------------------------------
-- Start box
----------------------------------------------------------------------------
p.startBox = makeInvokeFunc('_startBox')
function p._startBox(args, env)
--[[
-- This function generates the start box.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- The actual work is done by p.makeStartBoxLinksData and p.renderStartBoxLinks which make
-- the [view] [edit] [history] [purge] links, and by p.makeStartBoxData and p.renderStartBox
-- which generate the box HTML.
--]]
env = env or p.getEnvironment(args)
local links
local content = args.content
if not content or args[1] then
-- No need to include the links if the documentation is on the template page itself.
local linksData = p.makeStartBoxLinksData(args, env)
if linksData then
links = p.renderStartBoxLinks(linksData)
end
end
-- Generate the start box html.
local data = p.makeStartBoxData(args, env, links)
if data then
return p.renderStartBox(data)
else
-- User specified no heading.
return nil
end
end
function p.makeStartBoxLinksData(args, env)
--[[
-- Does initial processing of data to make the [view] [edit] [history] [purge] links.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- Messages:
-- 'view-link-display' --> 'view'
-- 'edit-link-display' --> 'edit'
-- 'history-link-display' --> 'history'
-- 'purge-link-display' --> 'purge'
-- 'module-preload' --> 'Template:Documentation/preload-module-doc'
-- 'docpage-preload' --> 'Template:Documentation/preload'
-- 'create-link-display' --> 'create'
--]]
local subjectSpace = env.subjectSpace
local title = env.title
local docTitle = env.docTitle
if not title or not docTitle then
return nil
end
if docTitle.isRedirect then
docTitle = docTitle.redirectTarget
end
local data = {}
data.title = title
data.docTitle = docTitle
-- View, display, edit, and purge links if /doc exists.
data.viewLinkDisplay = message('view-link-display')
data.editLinkDisplay = message('edit-link-display')
data.historyLinkDisplay = message('history-link-display')
data.purgeLinkDisplay = message('purge-link-display')
-- Create link if /doc doesn't exist.
local preload = args.preload
if not preload then
if subjectSpace == 828 then -- Module namespace
preload = message('module-preload')
else
preload = message('docpage-preload')
end
end
data.preload = preload
data.createLinkDisplay = message('create-link-display')
return data
end
function p.renderStartBoxLinks(data)
--[[
-- Generates the [view][edit][history][purge] or [create][purge] links from the data table.
-- @data - a table of data generated by p.makeStartBoxLinksData
--]]
local function escapeBrackets(s)
-- Escapes square brackets with HTML entities.
s = s:gsub('%[', '[') -- Replace square brackets with HTML entities.
s = s:gsub('%]', ']')
return s
end
local ret
local docTitle = data.docTitle
local title = data.title
local purgeLink = makeUrlLink(title:fullUrl{action = 'purge'}, data.purgeLinkDisplay)
if docTitle.exists then
local viewLink = makeWikilink(docTitle.prefixedText, data.viewLinkDisplay)
local editLink = makeUrlLink(docTitle:fullUrl{action = 'edit'}, data.editLinkDisplay)
local historyLink = makeUrlLink(docTitle:fullUrl{action = 'history'}, data.historyLinkDisplay)
ret = '[%s] [%s] [%s] [%s]'
ret = escapeBrackets(ret)
ret = mw.ustring.format(ret, viewLink, editLink, historyLink, purgeLink)
else
local createLink = makeUrlLink(docTitle:fullUrl{action = 'edit', preload = data.preload}, data.createLinkDisplay)
ret = '[%s] [%s]'
ret = escapeBrackets(ret)
ret = mw.ustring.format(ret, createLink, purgeLink)
end
return ret
end
function p.makeStartBoxData(args, env, links)
--[=[
-- Does initial processing of data to pass to the start-box render function, p.renderStartBox.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
-- @links - a string containing the [view][edit][history][purge] links - could be nil if there's an error.
--
-- Messages:
-- 'documentation-icon-wikitext' --> '[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=]]'
-- 'template-namespace-heading' --> 'Template documentation'
-- 'module-namespace-heading' --> 'Module documentation'
-- 'file-namespace-heading' --> 'Summary'
-- 'other-namespaces-heading' --> 'Documentation'
-- 'testcases-create-link-display' --> 'create'
--]=]
local subjectSpace = env.subjectSpace
if not subjectSpace then
-- Default to an "other namespaces" namespace, so that we get at least some output
-- if an error occurs.
subjectSpace = 2
end
local data = {}
-- Heading
local heading = args.heading -- Blank values are not removed.
if heading == '' then
-- Don't display the start box if the heading arg is defined but blank.
return nil
end
if heading then
data.heading = heading
elseif subjectSpace == 10 then -- Template namespace
data.heading = message('documentation-icon-wikitext') .. ' ' .. message('template-namespace-heading')
elseif subjectSpace == 828 then -- Module namespace
data.heading = message('documentation-icon-wikitext') .. ' ' .. message('module-namespace-heading')
elseif subjectSpace == 6 then -- File namespace
data.heading = message('file-namespace-heading')
else
data.heading = message('other-namespaces-heading')
end
-- Heading CSS
local headingStyle = args['heading-style']
if headingStyle then
data.headingStyleText = headingStyle
else
-- 'documentation-heading'
data.headingClass = message('main-div-heading-class')
end
-- Data for the [view][edit][history][purge] or [create] links.
if links then
-- 'mw-editsection-like plainlinks'
data.linksClass = message('start-box-link-classes')
data.links = links
end
return data
end
function p.renderStartBox(data)
-- Renders the start box html.
-- @data - a table of data generated by p.makeStartBoxData.
local sbox = mw.html.create('div')
sbox
-- 'documentation-startbox'
:addClass(message('start-box-class'))
:newline()
:tag('span')
:addClass(data.headingClass)
:attr('id', 'documentation-heading')
:cssText(data.headingStyleText)
:wikitext(data.heading)
local links = data.links
if links then
sbox:tag('span')
:addClass(data.linksClass)
:attr('id', data.linksId)
:wikitext(links)
end
return tostring(sbox)
end
----------------------------------------------------------------------------
-- Documentation content
----------------------------------------------------------------------------
p.content = makeInvokeFunc('_content')
function p._content(args, env)
-- Displays the documentation contents
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
env = env or p.getEnvironment(args)
local docTitle = env.docTitle
local content = args.content
if not content and docTitle and docTitle.exists then
content = args._content or mw.getCurrentFrame():expandTemplate{title = docTitle.prefixedText}
end
if mw.site.siteName == "Miraheze Developers Wiki" and args.noexportinstructions ~= "yes" then
local export = mw.getCurrentFrame():expandTemplate{title="How to export"}
content = export .. "<br/>" .. (content or '')
end
-- The line breaks below are necessary so that "=== Headings ===" at the start and end
-- of docs are interpreted correctly.
return '\n' .. (content or '') .. '\n'
end
p.contentTitle = makeInvokeFunc('_contentTitle')
function p._contentTitle(args, env)
env = env or p.getEnvironment(args)
local docTitle = env.docTitle
if not args.content and docTitle and docTitle.exists then
return docTitle.prefixedText
else
return ''
end
end
----------------------------------------------------------------------------
-- End box
----------------------------------------------------------------------------
p.endBox = makeInvokeFunc('_endBox')
function p._endBox(args, env)
--[=[
-- This function generates the end box (also known as the link box).
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
--]=]
-- Get environment data.
env = env or p.getEnvironment(args)
local subjectSpace = env.subjectSpace
local docTitle = env.docTitle
if not subjectSpace or not docTitle then
return nil
end
-- Check whether we should output the end box at all. Add the end
-- box by default if the documentation exists or if we are in the
-- user, module or template namespaces.
local linkBox = args['link box']
if linkBox == 'off'
or not (
docTitle.exists
or subjectSpace == 2
or subjectSpace == 828
or subjectSpace == 10
)
then
return nil
end
-- Assemble the link box.
local text = ''
if linkBox then
text = text .. linkBox
else
text = text .. (p.makeDocPageBlurb(args, env) or '') -- "This documentation is transcluded from [[Foo]]."
if subjectSpace == 2 or subjectSpace == 10 or subjectSpace == 828 then
-- We are in the user, template or module namespaces.
-- Add sandbox and testcases links.
-- "Editors can experiment in this template's sandbox and testcases pages."
text = text .. (p.makeExperimentBlurb(args, env) or '') .. '<br />'
if not args.content and not args[1] then
-- "Please add categories to the /doc subpage."
-- Don't show this message with inline docs or with an explicitly specified doc page,
-- as then it is unclear where to add the categories.
text = text .. (p.makeCategoriesBlurb(args, env) or '')
end
text = text .. ' ' .. (p.makeSubpagesBlurb(args, env) or '') --"Subpages of this template"
end
end
local box = mw.html.create('div')
-- 'documentation-metadata'
box:attr('role', 'note')
:addClass(message('end-box-class'))
-- 'plainlinks'
:addClass(message('end-box-plainlinks'))
:wikitext(text)
:done()
return '\n' .. tostring(box)
end
function p.makeDocPageBlurb(args, env)
--[=[
-- Makes the blurb "This documentation is transcluded from [[Template:Foo]] (edit, history)".
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- Messages:
-- 'edit-link-display' --> 'edit'
-- 'history-link-display' --> 'history'
-- 'transcluded-from-blurb' -->
-- 'The above [[Wikipedia:Template documentation|documentation]]
-- is [[Help:Transclusion|transcluded]] from $1.'
-- 'module-preload' --> 'Template:Documentation/preload-module-doc'
-- 'create-link-display' --> 'create'
-- 'create-module-doc-blurb' -->
-- 'You might want to $1 a documentation page for this [[Wikipedia:Lua|Scribunto module]].'
--]=]
local docTitle = env.docTitle
if not docTitle then
return nil
end
local ret
if docTitle.exists then
-- /doc exists; link to it.
local docLink = makeWikilink(docTitle.prefixedText)
local editUrl = docTitle:fullUrl{action = 'edit'}
local editDisplay = message('edit-link-display')
local editLink = makeUrlLink(editUrl, editDisplay)
local historyUrl = docTitle:fullUrl{action = 'history'}
local historyDisplay = message('history-link-display')
local historyLink = makeUrlLink(historyUrl, historyDisplay)
ret = message('transcluded-from-blurb', {docLink})
.. ' '
.. makeToolbar(editLink, historyLink)
.. '<br />'
elseif env.subjectSpace == 828 then
-- /doc does not exist; ask to create it.
local createUrl = docTitle:fullUrl{action = 'edit', preload = message('module-preload')}
local createDisplay = message('create-link-display')
local createLink = makeUrlLink(createUrl, createDisplay)
ret = message('create-module-doc-blurb', {createLink})
.. '<br />'
end
return ret
end
function p.makeExperimentBlurb(args, env)
--[[
-- Renders the text "Editors can experiment in this template's sandbox (edit | diff) and testcases (edit) pages."
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- Messages:
-- 'sandbox-link-display' --> 'sandbox'
-- 'sandbox-edit-link-display' --> 'edit'
-- 'compare-link-display' --> 'diff'
-- 'module-sandbox-preload' --> 'Template:Documentation/preload-module-sandbox'
-- 'template-sandbox-preload' --> 'Template:Documentation/preload-sandbox'
-- 'sandbox-create-link-display' --> 'create'
-- 'mirror-edit-summary' --> 'Create sandbox version of $1'
-- 'mirror-link-display' --> 'mirror'
-- 'mirror-link-preload' --> 'Template:Documentation/mirror'
-- 'sandbox-link-display' --> 'sandbox'
-- 'testcases-link-display' --> 'testcases'
-- 'testcases-edit-link-display'--> 'edit'
-- 'template-sandbox-preload' --> 'Template:Documentation/preload-sandbox'
-- 'testcases-create-link-display' --> 'create'
-- 'testcases-link-display' --> 'testcases'
-- 'testcases-edit-link-display' --> 'edit'
-- 'module-testcases-preload' --> 'Template:Documentation/preload-module-testcases'
-- 'template-testcases-preload' --> 'Template:Documentation/preload-testcases'
-- 'experiment-blurb-module' --> 'Editors can experiment in this module's $1 and $2 pages.'
-- 'experiment-blurb-template' --> 'Editors can experiment in this template's $1 and $2 pages.'
--]]
local subjectSpace = env.subjectSpace
local templateTitle = env.templateTitle
local sandboxTitle = env.sandboxTitle
local testcasesTitle = env.testcasesTitle
local templatePage = templateTitle.prefixedText
if not subjectSpace or not templateTitle or not sandboxTitle or not testcasesTitle then
return nil
end
-- Make links.
local sandboxLinks, testcasesLinks
if sandboxTitle.exists then
local sandboxPage = sandboxTitle.prefixedText
local sandboxDisplay = message('sandbox-link-display')
local sandboxLink = makeWikilink(sandboxPage, sandboxDisplay)
local sandboxEditUrl = sandboxTitle:fullUrl{action = 'edit'}
local sandboxEditDisplay = message('sandbox-edit-link-display')
local sandboxEditLink = makeUrlLink(sandboxEditUrl, sandboxEditDisplay)
local compareUrl = env.compareUrl
local compareLink
if compareUrl then
local compareDisplay = message('compare-link-display')
compareLink = makeUrlLink(compareUrl, compareDisplay)
end
sandboxLinks = sandboxLink .. ' ' .. makeToolbar(sandboxEditLink, compareLink)
else
local sandboxPreload
if subjectSpace == 828 then
sandboxPreload = message('module-sandbox-preload')
else
sandboxPreload = message('template-sandbox-preload')
end
local sandboxCreateUrl = sandboxTitle:fullUrl{action = 'edit', preload = sandboxPreload}
local sandboxCreateDisplay = message('sandbox-create-link-display')
local sandboxCreateLink = makeUrlLink(sandboxCreateUrl, sandboxCreateDisplay)
local mirrorSummary = message('mirror-edit-summary', {makeWikilink(templatePage)})
local mirrorPreload = message('mirror-link-preload')
local mirrorUrl = sandboxTitle:fullUrl{action = 'edit', preload = mirrorPreload, summary = mirrorSummary}
if subjectSpace == 828 then
mirrorUrl = sandboxTitle:fullUrl{action = 'edit', preload = templateTitle.prefixedText, summary = mirrorSummary}
end
local mirrorDisplay = message('mirror-link-display')
local mirrorLink = makeUrlLink(mirrorUrl, mirrorDisplay)
sandboxLinks = message('sandbox-link-display') .. ' ' .. makeToolbar(sandboxCreateLink, mirrorLink)
end
if testcasesTitle.exists then
local testcasesPage = testcasesTitle.prefixedText
local testcasesDisplay = message('testcases-link-display')
local testcasesLink = makeWikilink(testcasesPage, testcasesDisplay)
local testcasesEditUrl = testcasesTitle:fullUrl{action = 'edit'}
local testcasesEditDisplay = message('testcases-edit-link-display')
local testcasesEditLink = makeUrlLink(testcasesEditUrl, testcasesEditDisplay)
-- for Modules, add testcases run link if exists
if testcasesTitle.contentModel == "Scribunto" and testcasesTitle.talkPageTitle and testcasesTitle.talkPageTitle.exists then
local testcasesRunLinkDisplay = message('testcases-run-link-display')
local testcasesRunLink = makeWikilink(testcasesTitle.talkPageTitle.prefixedText, testcasesRunLinkDisplay)
testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink, testcasesRunLink)
else
testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink)
end
else
local testcasesPreload
if subjectSpace == 828 then
testcasesPreload = message('module-testcases-preload')
else
testcasesPreload = message('template-testcases-preload')
end
local testcasesCreateUrl = testcasesTitle:fullUrl{action = 'edit', preload = testcasesPreload}
local testcasesCreateDisplay = message('testcases-create-link-display')
local testcasesCreateLink = makeUrlLink(testcasesCreateUrl, testcasesCreateDisplay)
testcasesLinks = message('testcases-link-display') .. ' ' .. makeToolbar(testcasesCreateLink)
end
local messageName
if subjectSpace == 828 then
messageName = 'experiment-blurb-module'
else
messageName = 'experiment-blurb-template'
end
return message(messageName, {sandboxLinks, testcasesLinks})
end
function p.makeCategoriesBlurb(args, env)
--[[
-- Generates the text "Please add categories to the /doc subpage."
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
-- Messages:
-- 'doc-link-display' --> '/doc'
-- 'add-categories-blurb' --> 'Please add categories to the $1 subpage.'
--]]
local docTitle = env.docTitle
if not docTitle then
return nil
end
local docPathLink = makeWikilink(docTitle.prefixedText, message('doc-link-display'))
return message('add-categories-blurb', {docPathLink})
end
function p.makeSubpagesBlurb(args, env)
--[[
-- Generates the "Subpages of this template" link.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
-- Messages:
-- 'template-pagetype' --> 'template'
-- 'module-pagetype' --> 'module'
-- 'default-pagetype' --> 'page'
-- 'subpages-link-display' --> 'Subpages of this $1'
--]]
local subjectSpace = env.subjectSpace
local templateTitle = env.templateTitle
if not subjectSpace or not templateTitle then
return nil
end
local pagetype
if subjectSpace == 10 then
pagetype = message('template-pagetype')
elseif subjectSpace == 828 then
pagetype = message('module-pagetype')
else
pagetype = message('default-pagetype')
end
local subpagesLink = makeWikilink(
'Special:PrefixIndex/' .. templateTitle.prefixedText .. '/',
message('subpages-link-display', {pagetype})
)
return message('subpages-blurb', {subpagesLink})
end
----------------------------------------------------------------------------
-- Tracking categories
----------------------------------------------------------------------------
function p.addTrackingCategories(env)
--[[
-- Check if {{documentation}} is transcluded on a /doc or /testcases page.
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
-- Messages:
-- 'display-strange-usage-category' --> true
-- 'doc-subpage' --> 'doc'
-- 'testcases-subpage' --> 'testcases'
-- 'strange-usage-category' --> 'Wikipedia pages with strange ((documentation)) usage'
--
-- /testcases pages in the module namespace are not categorised, as they may have
-- {{documentation}} transcluded automatically.
--]]
local title = env.title
local subjectSpace = env.subjectSpace
if not title or not subjectSpace then
return nil
end
local subpage = title.subpageText
local ret = ''
if message('display-strange-usage-category', nil, 'boolean')
and (
subpage == message('doc-subpage')
or subjectSpace ~= 828 and subpage == message('testcases-subpage')
)
then
ret = ret .. makeCategoryLink(message('strange-usage-category'))
end
return ret
end
return p
63afd4d0af80d47297a29efe2a2dfec0df691d22
Main Page
0
1
1
2024-07-23T15:25:53Z
MediaWiki default
1
Welcome to Miraheze!
wikitext
text/x-wiki
__NOTOC__
== Welcome to {{SITENAME}}! ==
This Main Page was created automatically and it seems it hasn't been replaced yet.
=== For the bureaucrat(s) of this wiki ===
Hello, and welcome to your new wiki! Thank you for choosing Miraheze for the hosting of your wiki, we hope you will enjoy our hosting.
You can immediately start working on your wiki or whenever you want.
Need help? No problem! We will help you with your wiki as needed. To start, try checking out these helpful links:
* [[mw:Special:MyLanguage/Help:Contents|MediaWiki guide]] (e.g. navigation, editing, deleting pages, blocking users)
* [[meta:Special:MyLanguage/FAQ|Miraheze FAQ]]
* [[meta:Special:MyLanguage/Request features|Request settings changes on your wiki]]. (Extensions, Skin and Logo/Favicon changes should be done through [[Special:ManageWiki]] on your wiki, see [[meta:Special:MyLanguage/ManageWiki|ManageWiki]] for more information.)
==== I still don't understand X! ====
Well, that's no problem. Even if something isn't explained in the documentation/FAQ, we are still happy to help you. You can find us here:
* [[meta:Special:MyLanguage/Help center|On our own Miraheze wiki]]
* On [[phorge:|Phorge]]
* On [https://miraheze.org/discord Discord]
* On IRC in #miraheze on irc.libera.chat ([irc://irc.libera.chat/%23miraheze direct link]; [https://web.libera.chat/?channel=#miraheze webchat])
=== For visitors of this wiki ===
Hello, the default Main Page of this wiki (this page) has not yet been replaced by the bureaucrat(s) of this wiki. The bureaucrat(s) might still be working on a Main Page, so please check again later!
070d9e6457eab136df99905438a1f57c037772b0
3
1
2024-07-23T19:19:18Z
Peerkartosh
2
wikitext
text/x-wiki
__NOTOC__
== Welcome! ==
<div style="float: right">[[File:peer_computer.png]]</div>
Greetings, dear internet dweller! You find yourself at <b>{{SITENAME}}</b>, a wiki made by peerkarotsh, colloquially known as Peer, to document their own characters and worlds. This wiki is empty for now, and might be like that for a while. Peer is going to work hard on developing it, though!
=== Useful resources ===
I'll keep them here for now, but will delete them when I finish polishing the CSS of this wiki.
* [[mw:Special:MyLanguage/Help:Contents|MediaWiki guide]] (e.g. navigation, editing, deleting pages, blocking users)
* [[meta:Special:MyLanguage/FAQ|Miraheze FAQ]]
* [[meta:Special:MyLanguage/Request features|Request settings changes on your wiki]]. (Extensions, Skin and Logo/Favicon changes should be done through [[Special:ManageWiki]] on your wiki, see [[meta:Special:MyLanguage/ManageWiki|ManageWiki]] for more information.)
=== For visitors of this wiki ===
If this wiki is empty when you visit it - please be patient!
5928cd1c68843429cba863b77b44b2866b761138
File:Peer computer.png
6
2
2
2024-07-23T19:17:43Z
Peerkartosh
2
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Bg checkered.png
6
3
4
2024-07-24T12:31:45Z
Peerkartosh
2
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Template:CharacterInfo
10
4
5
2024-07-24T13:03:28Z
Peerkartosh
2
Infobox created with infobox builder.
wikitext
text/x-wiki
<infobox><title source="title"><default>{{PAGENAME}}</default></title><image source="image"/><header>Header</header><data source="data1"><label>Label</label></data><data source="data2"><label>Label</label></data><data source="data3"><label>Label</label></data></infobox>
6e71a0533a1461b63898acf32fe3c52277526649
6
5
2024-07-24T13:28:01Z
Peerkartosh
2
wikitext
text/x-wiki
<includeonly>
<infobox>
<title source="title"><default>{{PAGENAME}}</default></title>
<image source="image"/>
<group collapse="open">
<header>General</header>
<data source="full name">
<label>Full name</label>
</data>
<data source="species">
<label>Species</label>
</data>
<data source="gender">
<label>Gender</label>
</data>
<data source="pronouns">
<label>Pronouns</label>
</data>
<data source="age">
<label>Age</label>
</data>
<data source="birthday">
<label>Birthday</label>
</data>
</group>
<group collapse="closed">
<header>Associates</header>
<data source="family">
<label>Family</label>
</data>
<data source="friends">
<label>Friends</label>
</data>
</group>
</infobox>
</includeonly>
<noinclude>
This is a generic table used to store information about a character.
{{CharacterInfo
|image = peer_computer.png
|full name = Name
|species = Species
|gender = Gender
|pronouns = Pronouns
|age = Age
|birthday = Birthday
|family = Family
|friends = Friends
}}
</noinclude>
764422820d4a249f293d635a2d6f725a9ac69d9f
83
6
2024-08-06T10:04:47Z
Peerkartosh
2
wikitext
text/x-wiki
<includeonly>
<infobox>
<title source="title"><default>{{PAGENAME}}</default></title>
<image source="image"/>
<group collapse="open">
<header>General</header>
<data source="full name">
<label>Full name</label>
</data>
<data source="species">
<label>Species</label>
</data>
<data source="gender">
<label>Gender</label>
</data>
<data source="pronouns">
<label>Pronouns</label>
</data>
<data source="age">
<label>Age</label>
</data>
<data source="birthday">
<label>Birthday</label>
</data>
</group>
<group collapse="closed">
<header>Associates</header>
<data source="family">
<label>Family</label>
</data>
<data source="friends">
<label>Friends</label>
</data>
<data source="other">
<label>Other</label>
</data>
</group>
</infobox>
</includeonly>
<noinclude>
This is a generic table used to store information about a character.
{{CharacterInfo
|image = peer_computer.png
|full name = Name
|species = Species
|gender = Gender
|pronouns = Pronouns
|age = Age
|birthday = Birthday
|family = Family
|friends = Friends
|other = Other
}}
</noinclude>
f40680c08c5e2a93da0533bb7a926018155259cc
File:Camera default.png
6
5
7
2024-07-24T13:33:08Z
Peerkartosh
2
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Camera
0
6
8
2024-07-24T13:45:39Z
Peerkartosh
2
Created page with "{{CharacterInfo |image = camera_default.png |species = robot |pronouns = they/them }} Camera is Peer's main [https://fanlore.org/wiki/-sona sona], or a character they use to represent themselves in their art. ==Appearance== WIP ==Personality== WIP ==Story== WIP ==Gallery== WIP ==Trivia== WIP ==References== <references />"
wikitext
text/x-wiki
{{CharacterInfo
|image = camera_default.png
|species = robot
|pronouns = they/them
}}
Camera is Peer's main [https://fanlore.org/wiki/-sona sona], or a character they use to represent themselves in their art.
==Appearance==
WIP
==Personality==
WIP
==Story==
WIP
==Gallery==
WIP
==Trivia==
WIP
==References==
<references />
14c49e6137d960dad078a020848ce8a986ba2563
82
8
2024-08-06T07:44:25Z
Peerkartosh
2
wikitext
text/x-wiki
{{WIP}}
{{CharacterInfo
|image = camera_default.png
|species = robot
|pronouns = they/them
}}
Camera is Peer's main [https://fanlore.org/wiki/-sona sona], or a character they use to represent themselves in their art.
==Appearance==
WIP
==Personality==
WIP
==Story==
WIP
==Gallery==
WIP
==Trivia==
WIP
==References==
<references />
45bb61ffe66720fa49ec6e55a615b8249ab0864e
User:Peerkartosh
2
7
9
2024-07-24T16:57:41Z
Peerkartosh
2
Created page with "Hello! I'm the creator of this humble place. I just wanted to make this page so my username is not red but I might write something here eventually?"
wikitext
text/x-wiki
Hello! I'm the creator of this humble place. I just wanted to make this page so my username is not red but I might write something here eventually?
652f247993b70b3d99a52bf0c8c71605f90b14f5
Template:Tl
10
32
59
2024-08-06T06:52:17Z
Peerkartosh
2
Redirected page to [[Template:Template link]]
wikitext
text/x-wiki
#REDIRECT [[Template:Template link]]
fb9a6b420e13178e581af6e7d64274cd30a79017
MediaWiki:Common.css
8
40
75
2024-08-06T07:01:58Z
Peerkartosh
2
Created page with "/* CSS placed here will be applied to all skins */ /* Article message box styles */ table.ambox { margin: 0 10%; /* 10% = Will not overlap with other elements */ border: 1px solid #a2a9b1; /* @noflip */ border-left: 10px solid #36c; /* Default "notice" blue */ background: #fbfbfb; } table.ambox + table.ambox { /* Single border between stacked boxes. */ margin-top: -1px; } .ambox th.mbox-text, .ambox td.mbox-text {..."
css
text/css
/* CSS placed here will be applied to all skins */
/* Article message box styles */
table.ambox {
margin: 0 10%; /* 10% = Will not overlap with other elements */
border: 1px solid #a2a9b1;
/* @noflip */
border-left: 10px solid #36c; /* Default "notice" blue */
background: #fbfbfb;
}
table.ambox + table.ambox { /* Single border between stacked boxes. */
margin-top: -1px;
}
.ambox th.mbox-text,
.ambox td.mbox-text { /* The message body cell(s) */
padding: 0.25em 0.5em; /* 0.5em left/right */
}
.ambox td.mbox-image { /* The left image cell */
/* @noflip */
padding: 2px 0 2px 0.5em; /* 0.5em left, 0px right */
}
.ambox td.mbox-imageright { /* The right image cell */
/* @noflip */
padding: 2px 0.5em 2px 0; /* 0px left, 0.5em right */
}
table.ambox-notice {
/* @noflip */
border-left: 10px solid #36c; /* Blue */
}
table.ambox-speedy {
/* @noflip */
border-left: 10px solid #b32424; /* Red */
background: #fee7e6; /* Pink */
}
table.ambox-delete {
/* @noflip */
border-left: 10px solid #b32424; /* Red */
}
table.ambox-content {
/* @noflip */
border-left: 10px solid #f28500; /* Orange */
}
table.ambox-style {
/* @noflip */
border-left: 10px solid #fc3; /* Yellow */
}
table.ambox-move {
/* @noflip */
border-left: 10px solid #9932cc; /* Purple */
}
table.ambox-protection {
/* @noflip */
border-left: 10px solid #a2a9b1; /* Gray-gold */
}
5ca83809afbac8d7f5ad41f46e732ebfe2417c04
76
75
2024-08-06T07:06:25Z
Peerkartosh
2
css
text/css
/* CSS placed here will be applied to all skins */
/* ------------------------------- */
/* Article message box styles */
table.ambox {
margin: 0 10%; /* 10% = Will not overlap with other elements */
border: 1px solid #a2a9b1;
/* @noflip */
border-left: 10px solid #36c; /* Default "notice" blue */
background: #fbfbfb;
}
table.ambox + table.ambox { /* Single border between stacked boxes. */
margin-top: -1px;
}
.ambox th.mbox-text,
.ambox td.mbox-text { /* The message body cell(s) */
padding: 0.25em 0.5em; /* 0.5em left/right */
}
.ambox td.mbox-image { /* The left image cell */
/* @noflip */
padding: 2px 0 2px 0.5em; /* 0.5em left, 0px right */
}
.ambox td.mbox-imageright { /* The right image cell */
/* @noflip */
padding: 2px 0.5em 2px 0; /* 0px left, 0.5em right */
}
table.ambox-notice {
/* @noflip */
border-left: 10px solid #36c; /* Blue */
}
table.ambox-speedy {
/* @noflip */
border-left: 10px solid #b32424; /* Red */
background: #fee7e6; /* Pink */
}
table.ambox-delete {
/* @noflip */
border-left: 10px solid #b32424; /* Red */
}
table.ambox-content {
/* @noflip */
border-left: 10px solid #f28500; /* Orange */
}
table.ambox-style {
/* @noflip */
border-left: 10px solid #fc3; /* Yellow */
}
table.ambox-move {
/* @noflip */
border-left: 10px solid #9932cc; /* Purple */
}
table.ambox-protection {
/* @noflip */
border-left: 10px solid #a2a9b1; /* Gray-gold */
}
/* ------------------------------- */
/* Other pages message box styles */
table.ombox {
margin: 4px 10%;
border-collapse: collapse;
border: 1px solid #a2a9b1; /* Default "notice" gray */
background: #f8f9fa;
}
table.ombox-notice {
border: 1px solid #a2a9b1; /* Gray */
}
table.ombox-speedy {
border: 2px solid #b32424; /* Red */
background: #fee7e6; /* Pink */
}
table.ombox-delete {
border: 2px solid #b32424; /* Red */
}
table.ombox-content {
border: 1px solid #f28500; /* Orange */
}
table.ombox-style {
border: 1px solid #fc3; /* Yellow */
}
table.ombox-move {
border: 1px solid #9932cc; /* Purple */
}
table.ombox-protection {
border: 2px solid #a2a9b1; /* Gray-gold */
}
ac7696c5b497376309f0e741b67dcf8b2fac8e30
77
76
2024-08-06T07:10:34Z
Peerkartosh
2
css
text/css
/* CSS placed here will be applied to all skins */
/* ------------------------------- */
/* Article message box styles */
table.ambox {
margin: 4px 10%; /* 10% = Will not overlap with other elements */
border: 1px solid #a2a9b1;
/* @noflip */
border-left: 10px solid #36c; /* Default "notice" blue */
background: #fbfbfb;
}
table.ambox + table.ambox { /* Single border between stacked boxes. */
margin-top: -1px;
}
.ambox th.mbox-text,
.ambox td.mbox-text { /* The message body cell(s) */
padding: 0.25em 0.5em; /* 0.5em left/right */
}
.ambox td.mbox-image { /* The left image cell */
/* @noflip */
padding: 2px 0 2px 0.5em; /* 0.5em left, 0px right */
}
.ambox td.mbox-imageright { /* The right image cell */
/* @noflip */
padding: 2px 0.5em 2px 0; /* 0px left, 0.5em right */
}
table.ambox-notice {
/* @noflip */
border-left: 10px solid #36c; /* Blue */
}
table.ambox-speedy {
/* @noflip */
border-left: 10px solid #b32424; /* Red */
background: #fee7e6; /* Pink */
}
table.ambox-delete {
/* @noflip */
border-left: 10px solid #b32424; /* Red */
}
table.ambox-content {
/* @noflip */
border-left: 10px solid #f28500; /* Orange */
}
table.ambox-style {
/* @noflip */
border-left: 10px solid #fc3; /* Yellow */
}
table.ambox-move {
/* @noflip */
border-left: 10px solid #9932cc; /* Purple */
}
table.ambox-protection {
/* @noflip */
border-left: 10px solid #a2a9b1; /* Gray-gold */
}
/* ------------------------------- */
/* Other pages message box styles */
table.ombox {
margin: 4px 10%;
border-collapse: collapse;
border: 1px solid #a2a9b1; /* Default "notice" gray */
background: #f8f9fa;
}
table.ombox-notice {
border: 1px solid #a2a9b1; /* Gray */
}
table.ombox-speedy {
border: 2px solid #b32424; /* Red */
background: #fee7e6; /* Pink */
}
table.ombox-delete {
border: 2px solid #b32424; /* Red */
}
table.ombox-content {
border: 1px solid #f28500; /* Orange */
}
table.ombox-style {
border: 1px solid #fc3; /* Yellow */
}
table.ombox-move {
border: 1px solid #9932cc; /* Purple */
}
table.ombox-protection {
border: 2px solid #a2a9b1; /* Gray-gold */
}
2123654143d457a0d3ae16addca52e5163a856dd
80
77
2024-08-06T07:39:39Z
Peerkartosh
2
css
text/css
/* CSS placed here will be applied to all skins */
/* ------------------------------- */
/* Article message box styles */
table.ambox {
margin: 0 auto 2px; /* 10% = Will not overlap with other elements */
border: 1px solid #a2a9b1;
/* @noflip */
border-left: 10px solid #36c; /* Default "notice" blue */
background: #fbfbfb;
}
table.ambox + table.ambox { /* Single border between stacked boxes. */
margin-top: -1px;
}
.ambox th.mbox-text,
.ambox td.mbox-text { /* The message body cell(s) */
padding: 0.25em 0.5em; /* 0.5em left/right */
}
.ambox td.mbox-image { /* The left image cell */
/* @noflip */
padding: 2px 0 2px 0.5em; /* 0.5em left, 0px right */
}
.ambox td.mbox-imageright { /* The right image cell */
/* @noflip */
padding: 2px 0.5em 2px 0; /* 0px left, 0.5em right */
}
.ambox td.mbox-text { /* Text cell */
padding: .25em .5em;
}
table.ambox-notice {
/* @noflip */
border-left: 10px solid #36c; /* Blue */
}
table.ambox-speedy {
/* @noflip */
border-left: 10px solid #b32424; /* Red */
background: #fee7e6; /* Pink */
}
table.ambox-delete {
/* @noflip */
border-left: 10px solid #b32424; /* Red */
}
table.ambox-content {
/* @noflip */
border-left: 10px solid #f28500; /* Orange */
}
table.ambox-style {
/* @noflip */
border-left: 10px solid #fc3; /* Yellow */
}
table.ambox-move {
/* @noflip */
border-left: 10px solid #9932cc; /* Purple */
}
table.ambox-protection {
/* @noflip */
border-left: 10px solid #a2a9b1; /* Gray-gold */
}
/* ------------------------------- */
/* Other pages message box styles */
table.ombox {
margin: 4px 10%;
border-collapse: collapse;
border: 1px solid #a2a9b1; /* Default "notice" gray */
background: #f8f9fa;
}
table.ombox-notice {
border: 1px solid #a2a9b1; /* Gray */
}
table.ombox-speedy {
border: 2px solid #b32424; /* Red */
background: #fee7e6; /* Pink */
}
table.ombox-delete {
border: 2px solid #b32424; /* Red */
}
table.ombox-content {
border: 1px solid #f28500; /* Orange */
}
table.ombox-style {
border: 1px solid #fc3; /* Yellow */
}
table.ombox-move {
border: 1px solid #9932cc; /* Purple */
}
table.ombox-protection {
border: 2px solid #a2a9b1; /* Gray-gold */
}
49dd25d64bfc8ba61a3ec055de2556193060280c
81
80
2024-08-06T07:42:32Z
Peerkartosh
2
css
text/css
/* CSS placed here will be applied to all skins */
/* ------------------------------- */
/* Article message box styles */
table.ambox {
margin: 0 auto 2px; /* 10% = Will not overlap with other elements */
border: 1px solid #a2a9b1;
/* @noflip */
border-left: 10px solid #36c; /* Default "notice" blue */
background: #fbfbfb;
}
table.ambox + table.ambox { /* Single border between stacked boxes. */
margin-top: -1px;
}
.ambox th.mbox-text,
.ambox td.mbox-text { /* The message body cell(s) */
padding: 0.25em 0.5em; /* 0.5em left/right */
}
.ambox td.mbox-image { /* The left image cell */
/* @noflip */
padding: 2px 0 2px 0.5em; /* 0.5em left, 0px right */
}
.ambox td.mbox-imageright { /* The right image cell */
/* @noflip */
padding: 2px 0.5em 2px 0; /* 0px left, 0.5em right */
}
table.ambox-notice {
/* @noflip */
border-left: 10px solid #36c; /* Blue */
}
table.ambox-speedy {
/* @noflip */
border-left: 10px solid #b32424; /* Red */
background: #fee7e6; /* Pink */
}
table.ambox-delete {
/* @noflip */
border-left: 10px solid #b32424; /* Red */
}
table.ambox-content {
/* @noflip */
border-left: 10px solid #f28500; /* Orange */
}
table.ambox-style {
/* @noflip */
border-left: 10px solid #fc3; /* Yellow */
}
table.ambox-move {
/* @noflip */
border-left: 10px solid #9932cc; /* Purple */
}
table.ambox-protection {
/* @noflip */
border-left: 10px solid #a2a9b1; /* Gray-gold */
}
/* ------------------------------- */
/* Other pages message box styles */
table.ombox {
margin: 4px 10%;
border-collapse: collapse;
border: 1px solid #a2a9b1; /* Default "notice" gray */
background: #f8f9fa;
}
table.ombox-notice {
border: 1px solid #a2a9b1; /* Gray */
}
table.ombox-speedy {
border: 2px solid #b32424; /* Red */
background: #fee7e6; /* Pink */
}
table.ombox-delete {
border: 2px solid #b32424; /* Red */
}
table.ombox-content {
border: 1px solid #f28500; /* Orange */
}
table.ombox-style {
border: 1px solid #fc3; /* Yellow */
}
table.ombox-move {
border: 1px solid #9932cc; /* Purple */
}
table.ombox-protection {
border: 2px solid #a2a9b1; /* Gray-gold */
}
eeda84a4283a6c0eeac297162f70d0aeb10f188e
Template:WIP
10
41
78
2024-08-06T07:32:25Z
Peerkartosh
2
Created page with "<includeonly> {{ambox | image = [[File:Peer_computer.png|80px]] | type = content | text = '''Halt! This page is still a WIP!''' The thing described in this article has lore, but it has yet to be written out. Stay patient, or help out by contributing! }} </includeonly> <noinclude> {{WIP}} ==Template info== You can use this template when a page is still a Work in Progress. Type <code><nowiki>{{WIP}}</nowiki></code> in the very beginning of an article to use it. </noinclude>"
wikitext
text/x-wiki
<includeonly>
{{ambox
| image = [[File:Peer_computer.png|80px]]
| type = content
| text =
'''Halt! This page is still a WIP!'''
The thing described in this article has lore, but it has yet to be written out. Stay patient, or help out by contributing!
}}
</includeonly>
<noinclude>
{{WIP}}
==Template info==
You can use this template when a page is still a Work in Progress. Type <code><nowiki>{{WIP}}</nowiki></code> in the very beginning of an article to use it.
</noinclude>
9b2985e7e6a2df3ff7b0a0cf6c309287db95d16e
Template:CharacterInfo
10
4
84
83
2024-08-06T10:15:03Z
Peerkartosh
2
wikitext
text/x-wiki
<includeonly>
<infobox>
<title source="title"><default>{{PAGENAME}}</default></title>
<image source="image"/>
<group collapse="open">
<header>General</header>
<data source="full name">
<label>Full name</label>
</data>
<data source="species">
<label>Species</label>
</data>
<data source="gender">
<label>Gender</label>
</data>
<data source="pronouns">
<label>Pronouns</label>
</data>
<data source="age">
<label>Age</label>
</data>
<data source="birthday">
<label>Birthday</label>
</data>
</group>
<group collapse="closed">
<header>Associates</header>
<data source="family">
<label>Family</label>
</data>
<data source="friends">
<label>Friends</label>
</data>
<data source="other">
<label>Other</label>
</data>
</group>
</infobox>
</includeonly>
<noinclude>
{{CharacterInfo
|image = peer_computer.png
|full name = Name
|species = Species
|gender = Gender
|pronouns = Pronouns
|age = Age
|birthday = Birthday
|family = Family
|friends = Friends
|other = Other
}}
==Template info==
This is a generic '''infobox''' used to display information about a character. You can include it in a page by writing <code><nowiki>{{CharacterInfo}}</nowiki></code> at the very beginning.
Using this template is easy, you just have to write in the information like in the example below:
<syntaxhighlight>
{{CharacterInfo
|image = image.png
|full name = Sans
|species = skeleton
|gender = male
|pronouns = he/him
|age = idk lol
|birthday = does he have a birthday?
|family = [[Papyrus]]
|friends = too many for me to list in this example.
}}
</syntaxhighlight>
</noinclude>
5bcf520e9188aa9d7f5ce87fd092893d4cfe64ef
105
84
2024-08-07T07:17:14Z
Peerkartosh
2
wikitext
text/x-wiki
<includeonly>
<infobox>
<title source="title"><default>{{PAGENAME}}</default></title>
<image source="image"/>
<group collapse="open">
<header>General</header>
<data source="full name">
<label>Full name</label>
</data>
<data source="species">
<label>Species</label>
</data>
<data source="gender">
<label>Gender</label>
</data>
<data source="pronouns">
<label>Pronouns</label>
</data>
<data source="age">
<label>Age</label>
</data>
<data source="birthday">
<label>Birthday</label>
</data>
</group>
<group collapse="closed">
<header>Associates</header>
<data source="family">
<label>Family</label>
</data>
<data source="friends">
<label>Friends</label>
</data>
<data source="other">
<label>Other</label>
</data>
</group>
</infobox>
</includeonly>
<noinclude>
{{CharacterInfo
|image = peer_computer.png
|full name = Name
|species = Species
|gender = Gender
|pronouns = Pronouns
|age = Age
|birthday = Birthday
|family = Family
|friends = Friends
|other = Other
}}
==Template info==
This is a generic '''infobox''' used to display information about a character. You can include it in a page by writing <code><nowiki>{{CharacterInfo}}</nowiki></code> at the very beginning.
Using this template is easy, you just have to write in the information like in the example below:
<syntaxhighlight>
{{CharacterInfo
|image = image.png
|full name = Sans
|species = skeleton
|gender = male
|pronouns = he/him
|age = idk lol
|birthday = does he have a birthday?
|family = [[Papyrus]]
|friends = too many for me to list in this example.
}}
</syntaxhighlight>
[[Category: Native templates]]
</noinclude>
ffe16c68ddefc84772b95559314b20de4778f52d
107
105
2024-08-07T10:50:15Z
Peerkartosh
2
wikitext
text/x-wiki
<includeonly>
<infobox>
<title source="title"><default>{{PAGENAME}}</default></title>
<image source="image"/>
<group collapse="open">
<header>General</header>
<data source="full name">
<label>Full name</label>
</data>
<data source="species">
<label>Species</label>
</data>
<data source="gender">
<label>Gender</label>
</data>
<data source="pronouns">
<label>Pronouns</label>
</data>
<data source="age">
<label>Age</label>
</data>
<data source="birthday">
<label>Birthday</label>
</data>
</group>
<group collapse="closed">
<header>Associates</header>
<data source="family">
<label>Family</label>
</data>
<data source="friends">
<label>Friends</label>
</data>
<data source="other">
<label>Other</label>
</data>
</group>
</infobox>
[[Category: Characters]]
</includeonly>
<noinclude>
{{CharacterInfo
|image = peer_computer.png
|full name = Name
|species = Species
|gender = Gender
|pronouns = Pronouns
|age = Age
|birthday = Birthday
|family = Family
|friends = Friends
|other = Other
}}
==Template info==
This is a generic '''infobox''' used to display information about a character. You can include it in a page by writing <code><nowiki>{{CharacterInfo}}</nowiki></code> at the very beginning.
Using this template is easy, you just have to write in the information like in the example below:
<syntaxhighlight>
{{CharacterInfo
|image = image.png
|full name = Sans
|species = skeleton
|gender = male
|pronouns = he/him
|age = idk lol
|birthday = does he have a birthday?
|family = [[Papyrus]]
|friends = too many for me to list in this example.
}}
</syntaxhighlight>
[[Category: Native templates]]
</noinclude>
90c8f31533e7dc2c9698ba0e48e2a54f9894546e
108
107
2024-08-07T10:50:55Z
Peerkartosh
2
wikitext
text/x-wiki
<includeonly>
<infobox>
<title source="title"><default>{{PAGENAME}}</default></title>
<image source="image"/>
<group collapse="open">
<header>General</header>
<data source="full name">
<label>Full name</label>
</data>
<data source="species">
<label>Species</label>
</data>
<data source="gender">
<label>Gender</label>
</data>
<data source="pronouns">
<label>Pronouns</label>
</data>
<data source="age">
<label>Age</label>
</data>
<data source="birthday">
<label>Birthday</label>
</data>
</group>
<group collapse="closed">
<header>Associates</header>
<data source="family">
<label>Family</label>
</data>
<data source="friends">
<label>Friends</label>
</data>
<data source="other">
<label>Other</label>
</data>
</group>
</infobox>
[[Category: Characters]]
</includeonly>
<noinclude>
==Template info==
This is a generic '''infobox''' used to display information about a character. You can include it in a page by writing <code><nowiki>{{CharacterInfo}}</nowiki></code> at the very beginning.
Using this template is easy, you just have to write in the information like in the example below:
<syntaxhighlight>
{{CharacterInfo
|image = image.png
|full name = Sans
|species = skeleton
|gender = male
|pronouns = he/him
|age = idk lol
|birthday = does he have a birthday?
|family = [[Papyrus]]
|friends = too many for me to list in this example.
}}
</syntaxhighlight>
[[Category: Native templates]]
</noinclude>
52226106506daf4042d3c7a4a100ebb34eba60a5
File:Anty portrait.png
6
42
86
2024-08-06T10:26:14Z
Peerkartosh
2
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Anty
0
43
87
2024-08-06T10:32:48Z
Peerkartosh
2
Created page with "{{WIP}} {{CharacterInfo |image = anty_portrait.png |species = ant |gender = nonbinary |pronouns = any |friends = [[Scythe]]<br>[[Ant Queen]] (coworker)<br> [[String]] (coworker)<br> [[Newbee]] (coworker) |other = [[Skull]] (employer) }} Anty is a character that is part of [[Fiction Artificial]]. They work in the [[Bug Office]] as a reaper. ==Appearance== WIP ==Personality== WIP ==Story== WIP ==Trivia== WIP ==References== <references />"
wikitext
text/x-wiki
{{WIP}}
{{CharacterInfo
|image = anty_portrait.png
|species = ant
|gender = nonbinary
|pronouns = any
|friends = [[Scythe]]<br>[[Ant Queen]] (coworker)<br> [[String]] (coworker)<br> [[Newbee]] (coworker)
|other = [[Skull]] (employer)
}}
Anty is a character that is part of [[Fiction Artificial]]. They work in the [[Bug Office]] as a reaper.
==Appearance==
WIP
==Personality==
WIP
==Story==
WIP
==Trivia==
WIP
==References==
<references />
eb76d182cf77b7d91291a93887683b0b516cf0da
Template:Ambox
10
21
88
79
2024-08-06T10:41:19Z
Peerkartosh
2
wikitext
text/x-wiki
<includeonly>
{{{!}} style="{{{style|}}}" class="metadata plainlinks ambox {{#switch:{{{type|}}}
| serious = ambox-serious
| content = ambox-content
| style = ambox-style
| merge = ambox-merge
| notice = ambox-notice
| #default = ambox-notice
}}"
{{!}}-
{{#ifeq:{{{image}}}|none
| <!-- no image cell -->
| <nowiki/>
{{!}} class="mbox-image" {{!}} {{#switch:{{{image|{{{type|}}}}}}
| serious = [[File:Stop hand nuvola.svg|40px]]
| content = [[File:Emblem-important.svg|40px]]
| style = [[File:Broom icon.svg|40px]]
| merge = [[File:Merge-split-transwiki default.svg]]
| notice = [[File:Info non-talk.png|40px]]
| blank = <!-- empty image cell -->
| #default = {{{image|[[File:Info non-talk.png|40px]]}}}
}}
}}
{{!}} style="mbox-text" {{!}} {{{text}}}
{{#if:{{{imageright|}}}| <nowiki/>
{{!}} class="mbox-imageright" {{!}} {{#switch:{{{imageright|{{{type|}}}}}}
| serious = [[File:Stop hand nuvola.svg|40px]]
| content = [[File:Emblem-important.svg|40px]]
| style = [[File:Broom icon.svg|40px]]
| merge = [[File:Merge-split-transwiki default.svg]]
| notice = [[File:Info non-talk.png|40px]]
| blank = <!-- empty image cell -->
| #default = {{{imageright|}}}
}}
}}
{{!}}-
{{!}}}
</includeonly>
<noinclude>
== Template info ==
Displays a message box on an article.
__TOC__
=== Example ===
<syntaxhighlight>
{{Ambox
| type = serious
| text = Serious message
| style = width:70%
| textstyle = color:blue;
}}
</syntaxhighlight>
{{Ambox
| type = serious
| text = Serious message
| style = width:70%
| textstyle = color:blue;
}}
== Parameters ==
=== ''type'' ===
The type affects the colour of the left border and the image that shows by default (though this can be customised).
{{ambox|type=serious|text={{para|type|serious}}}}
{{ambox|type=content|text={{para|type|content}}}}
{{ambox|type=style|text={{para|type|style}}}}
{{ambox|type=merge|text={{para|type|merge}}}}
{{ambox|type=notice|text={{para|type|notice}}}}
=== ''image'' (optional) ===
Displays an image to the left of the message box. By default, the image that matches the type will be displayed. This parameter will accept either a predefined type (e.g. {{para|image|merge}}) or a link to an image (e.g. {{para|image|<nowiki>[[File:ImageNameHere.jpg|40px]]</nowiki>}}).
No image will be shown if {{para|image|blank}} is specified.
=== ''text'' ===
The text of the message.
=== ''style'' ===
CSS code to be applied to the entire message box (e.g. width).
=== ''textstyle'' ===
CSS code to be applied only to the text.
=== ''imageright'' ===
The same as ''image'', but displayed to the right and hidden by default. Also allows for predefined types or custom images. If this parameter is used, one may also want to use {{para|image|blank}} to hide the default image on the left.
</noinclude>
3800da01d7f916eec5e338fbd7b313719d68f7ab
89
88
2024-08-06T10:43:15Z
Peerkartosh
2
wikitext
text/x-wiki
<includeonly>
{{{!}} style="{{{style|}}}" class="metadata plainlinks ambox {{#switch:{{{type|}}}
| serious = ambox-serious
| content = ambox-content
| style = ambox-style
| merge = ambox-merge
| notice = ambox-notice
| #default = ambox-notice
}}"
{{!}}-
{{#ifeq:{{{image}}}|none
| <!-- no image cell -->
| <nowiki/>
{{!}} class="mbox-image" {{!}} {{#switch:{{{image|{{{type|}}}}}}
| serious = [[File:Stop hand nuvola.svg|40px]]
| content = [[File:Emblem-important.svg|40px]]
| style = [[File:Broom icon.svg|40px]]
| merge = [[File:Merge-split-transwiki default.svg]]
| notice = [[File:Info non-talk.png|40px]]
| blank = <!-- empty image cell -->
| #default = {{{image|[[File:Info non-talk.png|40px]]}}}
}}
}}
{{!}} style="mbox-text" {{!}} {{{text}}}
{{#if:{{{imageright|}}}| <nowiki/>
{{!}} class="mbox-imageright" {{!}} {{#switch:{{{imageright|{{{type|}}}}}}
| serious = [[File:Stop hand nuvola.svg|40px]]
| content = [[File:Emblem-important.svg|40px]]
| style = [[File:Broom icon.svg|40px]]
| merge = [[File:Merge-split-transwiki default.svg]]
| notice = [[File:Info non-talk.png|40px]]
| blank = <!-- empty image cell -->
| #default = {{{imageright|}}}
}}
}}
{{!}}-
{{!}}}
</includeonly>
<noinclude>
{{Ambox
|type = notice
|text = '''Example usage'''<br> You can put some text here.
}}
This template Displays a message box on an article.
== Example usage ==
<syntaxhighlight>
{{Ambox
| type = serious
| text = Serious message
| style = width:70%
| textstyle = color:blue;
}}
</syntaxhighlight>
{{Ambox
| type = serious
| text = Serious message
| style = width:70%
| textstyle = color:blue;
}}
== Parameters ==
=== ''type'' ===
The type affects the colour of the left border and the image that shows by default (though this can be customised).
{{ambox|type=serious|text={{para|type|serious}}}}
{{ambox|type=content|text={{para|type|content}}}}
{{ambox|type=style|text={{para|type|style}}}}
{{ambox|type=merge|text={{para|type|merge}}}}
{{ambox|type=notice|text={{para|type|notice}}}}
=== ''image'' (optional) ===
Displays an image to the left of the message box. By default, the image that matches the type will be displayed. This parameter will accept either a predefined type (e.g. {{para|image|merge}}) or a link to an image (e.g. {{para|image|<nowiki>[[File:ImageNameHere.jpg|40px]]</nowiki>}}).
No image will be shown if {{para|image|blank}} is specified.
=== ''text'' ===
The text of the message.
=== ''style'' ===
CSS code to be applied to the entire message box (e.g. width).
=== ''textstyle'' ===
CSS code to be applied only to the text.
=== ''imageright'' ===
The same as ''image'', but displayed to the right and hidden by default. Also allows for predefined types or custom images. If this parameter is used, one may also want to use {{para|image|blank}} to hide the default image on the left.
</noinclude>
5a3c540dc9aa83a9c9f5eb44243cd6520c07f232
File:Bg tiles.png
6
44
90
2024-08-06T12:15:36Z
Peerkartosh
2
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
94
90
2024-08-06T14:12:21Z
Peerkartosh
2
Peerkartosh uploaded a new version of [[File:Bg tiles.png]]
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
MediaWiki:Common.css
8
40
91
81
2024-08-06T13:50:57Z
Peerkartosh
2
Starting to work on the CSS. Still a WIP and I assume a lot of things will look bad.
css
text/css
/* CSS placed here will be applied to all skins */
:root {
--bg-color-solid: #11111B;
--bg-color-notsolid: #1d1d2bea;
--border-color: #8686a6;
--infobox-bg-color-notsolid: #333347ea;
--txt-color: #eee;
--txt-color-dark: #bbb;
--url-color: #aab7ff;
--url-color-visited: #888ecc;
--url-color-red: #e14c3f;
}
img {
max-width:100%;
height:auto;
}
body {
background-color: var(--bg-color-solid);
background-image: url(https://static.miraheze.org/peerversewiki/1/1b/Bg_tiles.png);
}
.mw-body {
color: var(--txt-color);
}
.mw-body h1, h2, h3, h4, h5, h6 {
color: var(--txt-color);
}
.mw-body a {
color: var(--url-color);
}
.mw-body a:visited {
color: var(--url-color-visited);
}
#mw-page-base {
background: none;
}
#content {
background-color: var(--bg-color-notsolid);
}
/* Navigation menus */
#p-navigation, #p-tb, #p-managewiki, #p-managewiki-sidebar-header {
border: 2px solid var(--border-color);
background-color: var(--bg-color-solid);
}
#p-personal {
background: linear-gradient(to left, #11111B, #15101560);
}
#p-navigation, #p-tb {
margin-bottom: 0.5em;
}
#mw-panel a, #mw-panel a:visited {
color: var(--url-color);
}
#mw-head a {
color: var(--url-color);
}
#mw-head .new a {
color: var(--url-color-red);
}
#mw-head .vector-menu-content-list li {
background-image: none;
}
.vector-menu-tabs .selected {
background-image: none;
background-color: var(--bg-color-notsolid);
}
.vector-menu-dropdown .vector-menu-content {
background-image: none;
background-color: var(--bg-color-notsolid);
}
.vector-search-box-input {
background-color: var(--bg-color-notsolid);
color: var(--txt-color);
}
.vector-legacy-sidebar .vector-menu-portal .vector-menu-heading {
color: var(--txt-color);
background-image: none;
}
/* ------------------------------- */
/* Article message box styles */
table.ambox {
box-sizing: border-box;
margin: 0 auto 2px; /* 10% = Will not overlap with other elements */
border: 1px solid var(--border-color);
/* @noflip */
border-left: 10px solid #36c; /* Default "notice" blue */
background: var(--infobox-bg-color-notsolid);
}
table.ambox + table.ambox { /* Single border between stacked boxes. */
margin-top: -1px;
}
.ambox th.mbox-text,
.ambox td.mbox-text { /* The message body cell(s) */
padding: 0.25em 0.5em; /* 0.5em left/right */
}
.ambox td.mbox-image { /* The left image cell */
/* @noflip */
padding: 2px 0 2px 0.5em; /* 0.5em left, 0px right */
}
.ambox td.mbox-imageright { /* The right image cell */
/* @noflip */
padding: 2px 0.5em 2px 0; /* 0px left, 0.5em right */
}
table.ambox-notice {
/* @noflip */
border-left: 10px solid #36c; /* Blue */
}
table.ambox-speedy {
/* @noflip */
border-left: 10px solid #b32424; /* Red */
background: #fee7e6; /* Pink */
}
table.ambox-delete {
/* @noflip */
border-left: 10px solid #b32424; /* Red */
}
table.ambox-content {
/* @noflip */
border-left: 10px solid #f28500; /* Orange */
}
table.ambox-style {
/* @noflip */
border-left: 10px solid #fc3; /* Yellow */
}
table.ambox-move {
/* @noflip */
border-left: 10px solid #9932cc; /* Purple */
}
table.ambox-protection {
/* @noflip */
border-left: 10px solid #a2a9b1; /* Gray-gold */
}
/* ------------------------------- */
/* Other pages message box styles */
table.ombox {
box-sizing: border-box;
margin: 4px 10%;
border-collapse: collapse;
border: 1px solid var(--border-color); /* Default "notice" gray */
background: var(--infobox-bg-color-notsolid);
}
table.ombox-notice {
border: 1px solid #a2a9b1; /* Gray */
}
table.ombox-speedy {
border: 2px solid #b32424; /* Red */
background: #fee7e6; /* Pink */
}
table.ombox-delete {
border: 2px solid #b32424; /* Red */
}
table.ombox-content {
border: 1px solid #f28500; /* Orange */
}
table.ombox-style {
border: 1px solid #fc3; /* Yellow */
}
table.ombox-move {
border: 1px solid #9932cc; /* Purple */
}
table.ombox-protection {
border: 2px solid #a2a9b1; /* Gray-gold */
}
90caa50a2748ccfe6f1a1c566bee1d7a8d8e316b
92
91
2024-08-06T13:57:42Z
Peerkartosh
2
css
text/css
/* CSS placed here will be applied to all skins */
:root {
--bg-color-solid: #11111B;
--bg-color-notsolid: #1d1d2bea;
--border-color: #8686a6;
--infobox-bg-color-notsolid: #333347ea;
--txt-color: #eee;
--txt-color-dark: #bbb;
--url-color: #aab7ff;
--url-color-visited: #888ecc;
--url-color-red: #e14c3f;
}
img {
max-width:100%;
height:auto;
}
body {
background-color: var(--bg-color-solid);
background-image: url(https://static.miraheze.org/peerversewiki/1/1b/Bg_tiles.png);
}
a.external {
color: var(--url-color);
}
a.external:visited {
color: var(--url-color-visited);
}
.toc {
background-color: var(--infobox-bg-color-notsolid);
border: 1px solid var(--border-color);
}
.toctogglelabel {
color: var(--url-color-visited);
}
.mw-body {
color: var(--txt-color);
}
.mw-body h1, h2, h3, h4, h5, h6 {
color: var(--txt-color);
}
.mw-body a {
color: var(--url-color);
}
.mw-body a:visited {
color: var(--url-color-visited);
}
#mw-page-base {
background: none;
}
#content {
background-color: var(--bg-color-notsolid);
}
/* Navigation menus */
#p-navigation, #p-tb, #p-managewiki, #p-managewiki-sidebar-header {
border: 2px solid var(--border-color);
background-color: var(--bg-color-solid);
}
#p-personal {
background: linear-gradient(to left, #11111B, #15101560);
}
#p-navigation, #p-tb {
margin-bottom: 0.5em;
}
#mw-panel a, #mw-panel a:visited {
color: var(--url-color);
}
#mw-head a {
color: var(--url-color);
}
#mw-head .new a {
color: var(--url-color-red);
}
#mw-head .vector-menu-content-list li {
background-image: none;
}
.vector-menu-tabs .selected {
background-image: none;
background-color: var(--bg-color-notsolid);
}
.vector-menu-dropdown .vector-menu-content {
background-image: none;
background-color: var(--bg-color-notsolid);
}
.vector-search-box-input {
background-color: var(--bg-color-notsolid);
color: var(--txt-color);
}
.vector-legacy-sidebar .vector-menu-portal .vector-menu-heading {
color: var(--txt-color);
background-image: none;
}
/* ------------------------------- */
/* Article message box styles */
table.ambox {
box-sizing: border-box;
margin: 0 auto 2px; /* 10% = Will not overlap with other elements */
border: 1px solid var(--border-color);
/* @noflip */
border-left: 10px solid #36c; /* Default "notice" blue */
background: var(--infobox-bg-color-notsolid);
}
table.ambox + table.ambox { /* Single border between stacked boxes. */
margin-top: -1px;
}
.ambox th.mbox-text,
.ambox td.mbox-text { /* The message body cell(s) */
padding: 0.25em 0.5em; /* 0.5em left/right */
}
.ambox td.mbox-image { /* The left image cell */
/* @noflip */
padding: 2px 0 2px 0.5em; /* 0.5em left, 0px right */
}
.ambox td.mbox-imageright { /* The right image cell */
/* @noflip */
padding: 2px 0.5em 2px 0; /* 0px left, 0.5em right */
}
table.ambox-notice {
/* @noflip */
border-left: 10px solid #36c; /* Blue */
}
table.ambox-speedy {
/* @noflip */
border-left: 10px solid #b32424; /* Red */
background: #fee7e6; /* Pink */
}
table.ambox-delete {
/* @noflip */
border-left: 10px solid #b32424; /* Red */
}
table.ambox-content {
/* @noflip */
border-left: 10px solid #f28500; /* Orange */
}
table.ambox-style {
/* @noflip */
border-left: 10px solid #fc3; /* Yellow */
}
table.ambox-move {
/* @noflip */
border-left: 10px solid #9932cc; /* Purple */
}
table.ambox-protection {
/* @noflip */
border-left: 10px solid #a2a9b1; /* Gray-gold */
}
/* ------------------------------- */
/* Other pages message box styles */
table.ombox {
box-sizing: border-box;
margin: 4px 10%;
border-collapse: collapse;
border: 1px solid var(--border-color); /* Default "notice" gray */
background: var(--infobox-bg-color-notsolid);
}
table.ombox-notice {
border: 1px solid #a2a9b1; /* Gray */
}
table.ombox-speedy {
border: 2px solid #b32424; /* Red */
background: #fee7e6; /* Pink */
}
table.ombox-delete {
border: 2px solid #b32424; /* Red */
}
table.ombox-content {
border: 1px solid #f28500; /* Orange */
}
table.ombox-style {
border: 1px solid #fc3; /* Yellow */
}
table.ombox-move {
border: 1px solid #9932cc; /* Purple */
}
table.ombox-protection {
border: 2px solid #a2a9b1; /* Gray-gold */
}
9060129541f55e281b87f197c8e51bac2e49407a
93
92
2024-08-06T14:00:12Z
Peerkartosh
2
css
text/css
/* CSS placed here will be applied to all skins */
:root {
--bg-color-solid: #11111B;
--bg-color-notsolid: #1d1d2bea;
--border-color: #8686a6;
--infobox-bg-color-notsolid: #333347ea;
--txt-color: #eee;
--txt-color-dark: #bbb;
--url-color: #aab7ff;
--url-color-visited: #888ecc;
--url-color-red: #e14c3f;
}
img {
max-width:100%;
height:auto;
}
body {
background-color: var(--bg-color-solid);
background-image: url(https://static.miraheze.org/peerversewiki/1/1b/Bg_tiles.png);
}
.mw-parser-output a.extiw, .mw-parser-output a.external {
color: var(--url-color);
}
.mw-parser-output a.extiw:visited, .mw-parser-output a.external:visited {
color: var(--url-color-visited);
}
.toc {
background-color: var(--infobox-bg-color-notsolid);
border: 1px solid var(--border-color);
}
.toctogglelabel {
color: var(--url-color-visited);
}
.mw-body {
color: var(--txt-color);
}
.mw-body h1, h2, h3, h4, h5, h6 {
color: var(--txt-color);
}
.mw-body a {
color: var(--url-color);
}
.mw-body a:visited {
color: var(--url-color-visited);
}
#mw-page-base {
background: none;
}
#content {
background-color: var(--bg-color-notsolid);
}
/* Navigation menus */
#p-navigation, #p-tb, #p-managewiki, #p-managewiki-sidebar-header {
border: 2px solid var(--border-color);
background-color: var(--bg-color-solid);
}
#p-personal {
background: linear-gradient(to left, #11111B, #15101560);
}
#p-navigation, #p-tb {
margin-bottom: 0.5em;
}
#mw-panel a, #mw-panel a:visited {
color: var(--url-color);
}
#mw-head a {
color: var(--url-color);
}
#mw-head .new a {
color: var(--url-color-red);
}
#mw-head .vector-menu-content-list li {
background-image: none;
}
.vector-menu-tabs .selected {
background-image: none;
background-color: var(--bg-color-notsolid);
}
.vector-menu-dropdown .vector-menu-content {
background-image: none;
background-color: var(--bg-color-notsolid);
}
.vector-search-box-input {
background-color: var(--bg-color-notsolid);
color: var(--txt-color);
}
.vector-legacy-sidebar .vector-menu-portal .vector-menu-heading {
color: var(--txt-color);
background-image: none;
}
/* ------------------------------- */
/* Article message box styles */
table.ambox {
box-sizing: border-box;
margin: 0 auto 2px; /* 10% = Will not overlap with other elements */
border: 1px solid var(--border-color);
/* @noflip */
border-left: 10px solid #36c; /* Default "notice" blue */
background: var(--infobox-bg-color-notsolid);
}
table.ambox + table.ambox { /* Single border between stacked boxes. */
margin-top: -1px;
}
.ambox th.mbox-text,
.ambox td.mbox-text { /* The message body cell(s) */
padding: 0.25em 0.5em; /* 0.5em left/right */
}
.ambox td.mbox-image { /* The left image cell */
/* @noflip */
padding: 2px 0 2px 0.5em; /* 0.5em left, 0px right */
}
.ambox td.mbox-imageright { /* The right image cell */
/* @noflip */
padding: 2px 0.5em 2px 0; /* 0px left, 0.5em right */
}
table.ambox-notice {
/* @noflip */
border-left: 10px solid #36c; /* Blue */
}
table.ambox-speedy {
/* @noflip */
border-left: 10px solid #b32424; /* Red */
background: #fee7e6; /* Pink */
}
table.ambox-delete {
/* @noflip */
border-left: 10px solid #b32424; /* Red */
}
table.ambox-content {
/* @noflip */
border-left: 10px solid #f28500; /* Orange */
}
table.ambox-style {
/* @noflip */
border-left: 10px solid #fc3; /* Yellow */
}
table.ambox-move {
/* @noflip */
border-left: 10px solid #9932cc; /* Purple */
}
table.ambox-protection {
/* @noflip */
border-left: 10px solid #a2a9b1; /* Gray-gold */
}
/* ------------------------------- */
/* Other pages message box styles */
table.ombox {
box-sizing: border-box;
margin: 4px 10%;
border-collapse: collapse;
border: 1px solid var(--border-color); /* Default "notice" gray */
background: var(--infobox-bg-color-notsolid);
}
table.ombox-notice {
border: 1px solid #a2a9b1; /* Gray */
}
table.ombox-speedy {
border: 2px solid #b32424; /* Red */
background: #fee7e6; /* Pink */
}
table.ombox-delete {
border: 2px solid #b32424; /* Red */
}
table.ombox-content {
border: 1px solid #f28500; /* Orange */
}
table.ombox-style {
border: 1px solid #fc3; /* Yellow */
}
table.ombox-move {
border: 1px solid #9932cc; /* Purple */
}
table.ombox-protection {
border: 2px solid #a2a9b1; /* Gray-gold */
}
d2d065436421f1dfabf0d34ca701b8ebf04d79e8
95
93
2024-08-06T14:29:09Z
Peerkartosh
2
css
text/css
/* CSS placed here will be applied to all skins */
:root {
--bg-color-solid: #11111B;
--bg-color-notsolid: #1d1d2bea;
--border-color: #8686a6;
--infobox-bg-color-notsolid: #333347ea;
--txt-color: #eee;
--txt-color-dark: #bbb;
--url-color: #aab7ff;
--url-color-visited: #6e75c2;
--url-color-red: #e14c3f;
}
img {
max-width:100%;
height:auto;
}
ul {
list-style-type: circle;
list-style-image: none;
}
body {
background-color: var(--bg-color-solid);
background-image: url(https://static.miraheze.org/peerversewiki/1/1b/Bg_tiles.png);
}
.mw-parser-output a.extiw, .mw-parser-output a.external {
color: var(--url-color);
}
.mw-parser-output a.extiw:visited, .mw-parser-output a.external:visited {
color: var(--url-color-visited);
}
/* ///////////////// */
/* Table of contents */
.toc {
background-color: var(--infobox-bg-color-notsolid);
border: 1px solid var(--border-color);
}
.toctogglelabel {
color: var(--url-color-visited);
}
.tocnumber, .toctext {
color: var(--txt-color);
}
/* ///////////////// */
/* Body */
.mw-body {
color: var(--txt-color);
}
.mw-body h1, h2, h3, h4, h5, h6 {
color: var(--txt-color);
}
.mw-body a {
color: var(--url-color);
}
.mw-body a:visited {
color: var(--url-color-visited);
}
.mw-body .new a {
color: var(--url-color-red);
}
#mw-page-base {
background: none;
}
#content {
background-color: var(--bg-color-notsolid);
}
/* //////////////// */
/* Navigation menus */
#p-navigation, #p-tb, #p-managewiki, #p-managewiki-sidebar-header {
border: 2px solid var(--border-color);
background-color: var(--bg-color-solid);
}
#p-personal {
background: linear-gradient(to left, #11111B, #15101560);
}
#p-navigation, #p-tb {
margin-bottom: 0.5em;
}
#mw-panel a, #mw-panel a:visited {
color: var(--url-color);
}
#mw-head a {
color: var(--url-color);
}
#mw-head .new a {
color: var(--url-color-red);
}
#mw-head .vector-menu-content-list li {
background-image: none;
}
/* //// */
/* Tabs */
.vector-menu-tabs .selected {
background-image: none;
background-color: var(--bg-color-notsolid);
}
.vector-menu-dropdown .vector-menu-content {
background-image: none;
background-color: var(--bg-color-notsolid);
}
.vector-search-box-input {
background-color: var(--bg-color-notsolid);
color: var(--txt-color);
}
.vector-legacy-sidebar .vector-menu-portal .vector-menu-heading {
color: var(--txt-color);
background-image: none;
}
/* ------------------------------- */
/* Infobox */
.portable-infobox {
border: 2px solid var(--border-color);
background: none;
}
.portable-infobox .pi-title, .portable-infobox .pi-header {
background: var(--infobox-bg-color-notsolid);
}
.portable-infobox .pi-border-color {
border: var(--border-color);
}
/* ------------------------------- */
/* Article message box styles */
table.ambox {
box-sizing: border-box;
margin: 0 auto 2px; /* 10% = Will not overlap with other elements */
border: 1px solid var(--border-color);
/* @noflip */
border-left: 10px solid #36c; /* Default "notice" blue */
background: var(--infobox-bg-color-notsolid);
}
table.ambox + table.ambox { /* Single border between stacked boxes. */
margin-top: -1px;
}
.ambox th.mbox-text,
.ambox td.mbox-text { /* The message body cell(s) */
padding: 0.25em 0.5em; /* 0.5em left/right */
}
.ambox td.mbox-image { /* The left image cell */
/* @noflip */
padding: 2px 0 2px 0.5em; /* 0.5em left, 0px right */
}
.ambox td.mbox-imageright { /* The right image cell */
/* @noflip */
padding: 2px 0.5em 2px 0; /* 0px left, 0.5em right */
}
table.ambox-notice {
/* @noflip */
border-left: 10px solid #36c; /* Blue */
}
table.ambox-speedy {
/* @noflip */
border-left: 10px solid #b32424; /* Red */
background: #fee7e6; /* Pink */
}
table.ambox-delete {
/* @noflip */
border-left: 10px solid #b32424; /* Red */
}
table.ambox-content {
/* @noflip */
border-left: 10px solid #f28500; /* Orange */
}
table.ambox-style {
/* @noflip */
border-left: 10px solid #fc3; /* Yellow */
}
table.ambox-move {
/* @noflip */
border-left: 10px solid #9932cc; /* Purple */
}
table.ambox-protection {
/* @noflip */
border-left: 10px solid #a2a9b1; /* Gray-gold */
}
/* ------------------------------- */
/* Other pages message box styles */
table.ombox {
box-sizing: border-box;
margin: 4px 10%;
border-collapse: collapse;
border: 1px solid var(--border-color); /* Default "notice" gray */
background: var(--infobox-bg-color-notsolid);
}
table.ombox-notice {
border: 1px solid #a2a9b1; /* Gray */
}
table.ombox-speedy {
border: 2px solid #b32424; /* Red */
background: #fee7e6; /* Pink */
}
table.ombox-delete {
border: 2px solid #b32424; /* Red */
}
table.ombox-content {
border: 1px solid #f28500; /* Orange */
}
table.ombox-style {
border: 1px solid #fc3; /* Yellow */
}
table.ombox-move {
border: 1px solid #9932cc; /* Purple */
}
table.ombox-protection {
border: 2px solid #a2a9b1; /* Gray-gold */
}
f3953e64dde5a66aa2a7eb5375ab41b8210cd309
96
95
2024-08-06T14:32:49Z
Peerkartosh
2
css
text/css
/* CSS placed here will be applied to all skins */
:root {
--bg-color-solid: #11111B;
--bg-color-notsolid: #1d1d2bea;
--border-color: #8686a6;
--infobox-bg-color-notsolid: #333347ea;
--txt-color: #eee;
--txt-color-dark: #bbb;
--url-color: #aab7ff;
--url-color-visited: #6e75c2;
--url-color-red: #e14c3f;
}
img {
max-width:100%;
height:auto;
}
ul {
list-style-type: circle;
list-style-image: none;
}
body {
background-color: var(--bg-color-solid);
background-image: url(https://static.miraheze.org/peerversewiki/1/1b/Bg_tiles.png);
}
.mw-parser-output a.extiw, .mw-parser-output a.external {
color: var(--url-color);
}
.mw-parser-output a.extiw:visited, .mw-parser-output a.external:visited {
color: var(--url-color-visited);
}
/* ///////////////// */
/* Table of contents */
.toc {
background-color: var(--infobox-bg-color-notsolid);
border: 1px solid var(--border-color);
}
.toctogglelabel {
color: var(--url-color-visited);
}
.tocnumber, .toctext {
color: var(--txt-color);
}
/* ///////////////// */
/* Body */
.mw-body {
color: var(--txt-color);
}
.mw-body h1, h2, h3, h4, h5, h6 {
color: var(--txt-color);
}
.mw-body a {
color: var(--url-color);
}
.mw-body a:visited {
color: var(--url-color-visited);
}
.mw-body a.new {
color: var(--url-color-red);
}
#mw-page-base {
background: none;
}
#content {
background-color: var(--bg-color-notsolid);
}
/* //////////////// */
/* Navigation menus */
#p-navigation, #p-tb, #p-managewiki, #p-managewiki-sidebar-header {
border: 2px solid var(--border-color);
background-color: var(--bg-color-solid);
}
#p-personal {
background: linear-gradient(to left, #11111B, #15101560);
}
#p-navigation, #p-tb {
margin-bottom: 0.5em;
}
#mw-panel a, #mw-panel a:visited {
color: var(--url-color);
}
#mw-head a {
color: var(--url-color);
}
#mw-head .new a {
color: var(--url-color-red);
}
#mw-head .vector-menu-content-list li {
background-image: none;
}
/* //// */
/* Tabs */
.vector-menu-tabs .selected {
background-image: none;
background-color: var(--bg-color-notsolid);
}
.vector-menu-dropdown .vector-menu-content {
background-image: none;
background-color: var(--bg-color-notsolid);
}
.vector-search-box-input {
background-color: var(--bg-color-notsolid);
color: var(--txt-color);
}
.vector-legacy-sidebar .vector-menu-portal .vector-menu-heading {
color: var(--txt-color);
background-image: none;
}
/* ------------------------------- */
/* Infobox */
.portable-infobox {
border: 2px solid var(--border-color);
background: none;
}
.portable-infobox .pi-title, .portable-infobox .pi-header {
background: var(--infobox-bg-color-notsolid);
}
.portable-infobox .pi-border-color {
border-color: var(--border-color);
}
/* ------------------------------- */
/* Article message box styles */
table.ambox {
box-sizing: border-box;
margin: 0 auto 2px; /* 10% = Will not overlap with other elements */
border: 1px solid var(--border-color);
/* @noflip */
border-left: 10px solid #36c; /* Default "notice" blue */
background: var(--infobox-bg-color-notsolid);
}
table.ambox + table.ambox { /* Single border between stacked boxes. */
margin-top: -1px;
}
.ambox th.mbox-text,
.ambox td.mbox-text { /* The message body cell(s) */
padding: 0.25em 0.5em; /* 0.5em left/right */
}
.ambox td.mbox-image { /* The left image cell */
/* @noflip */
padding: 2px 0 2px 0.5em; /* 0.5em left, 0px right */
}
.ambox td.mbox-imageright { /* The right image cell */
/* @noflip */
padding: 2px 0.5em 2px 0; /* 0px left, 0.5em right */
}
table.ambox-notice {
/* @noflip */
border-left: 10px solid #36c; /* Blue */
}
table.ambox-speedy {
/* @noflip */
border-left: 10px solid #b32424; /* Red */
background: #fee7e6; /* Pink */
}
table.ambox-delete {
/* @noflip */
border-left: 10px solid #b32424; /* Red */
}
table.ambox-content {
/* @noflip */
border-left: 10px solid #f28500; /* Orange */
}
table.ambox-style {
/* @noflip */
border-left: 10px solid #fc3; /* Yellow */
}
table.ambox-move {
/* @noflip */
border-left: 10px solid #9932cc; /* Purple */
}
table.ambox-protection {
/* @noflip */
border-left: 10px solid #a2a9b1; /* Gray-gold */
}
/* ------------------------------- */
/* Other pages message box styles */
table.ombox {
box-sizing: border-box;
margin: 4px 10%;
border-collapse: collapse;
border: 1px solid var(--border-color); /* Default "notice" gray */
background: var(--infobox-bg-color-notsolid);
}
table.ombox-notice {
border: 1px solid #a2a9b1; /* Gray */
}
table.ombox-speedy {
border: 2px solid #b32424; /* Red */
background: #fee7e6; /* Pink */
}
table.ombox-delete {
border: 2px solid #b32424; /* Red */
}
table.ombox-content {
border: 1px solid #f28500; /* Orange */
}
table.ombox-style {
border: 1px solid #fc3; /* Yellow */
}
table.ombox-move {
border: 1px solid #9932cc; /* Purple */
}
table.ombox-protection {
border: 2px solid #a2a9b1; /* Gray-gold */
}
e2a7b521f21e5d1b8de048035ae27bce4440e214
99
96
2024-08-07T07:02:59Z
Peerkartosh
2
css
text/css
/* CSS placed here will be applied to all skins */
:root {
--bg-color-solid: #11111B;
--bg-color-notsolid: #1d1d2bea;
--border-color: #8686a6;
--infobox-bg-color-notsolid: #333347ea;
--txt-color: #eee;
--txt-color-dark: #bbb;
--url-color: #aab7ff;
--url-color-visited: #6e75c2;
--url-color-red: #e14c3f;
}
img {
max-width:100%;
height:auto;
}
ul {
list-style-type: circle;
list-style-image: none;
}
body {
background-color: var(--bg-color-solid);
background-image: url(https://static.miraheze.org/peerversewiki/1/1b/Bg_tiles.png);
}
.mw-parser-output a.extiw, .mw-parser-output a.external {
color: var(--url-color);
}
.mw-parser-output a.extiw:visited, .mw-parser-output a.external:visited {
color: var(--url-color-visited);
}
/* ///////////////// */
/* Table of contents */
.toc {
background-color: var(--infobox-bg-color-notsolid);
border: 1px solid var(--border-color);
}
.toctogglelabel {
color: var(--url-color-visited);
}
.tocnumber, .toctext {
color: var(--txt-color);
}
/* ///////////////// */
/* Body */
.mw-body {
color: var(--txt-color);
}
.mw-body h1, h2, h3, h4, h5, h6 {
color: var(--txt-color);
}
.mw-body a {
color: var(--url-color);
}
.mw-body a:visited {
color: var(--url-color-visited);
}
.mw-body a.new {
color: var(--url-color-red);
}
#mw-page-base {
background: none;
}
#content {
background-color: var(--bg-color-notsolid);
}
.catlinks {
background: none;
border: var(--border-color);
}
/* //////////////// */
/* Navigation menus */
#p-navigation, #p-tb, #p-managewiki, #p-managewiki-sidebar-header {
border: 2px solid var(--border-color);
background-color: var(--bg-color-solid);
}
#p-personal {
background: linear-gradient(to left, #11111B, #15101560);
}
#p-navigation, #p-tb {
margin-bottom: 0.5em;
}
#mw-panel a, #mw-panel a:visited {
color: var(--url-color);
}
#mw-head a {
color: var(--url-color);
}
#mw-head .new a {
color: var(--url-color-red);
}
#mw-head .vector-menu-content-list li {
background-image: none;
}
/* //// */
/* Tabs */
.vector-menu-tabs .selected {
background-image: none;
background-color: var(--bg-color-notsolid);
}
.vector-menu-dropdown .vector-menu-content {
background-image: none;
background-color: var(--bg-color-notsolid);
}
.vector-search-box-input {
background-color: var(--bg-color-notsolid);
color: var(--txt-color);
}
.vector-legacy-sidebar .vector-menu-portal .vector-menu-heading {
color: var(--txt-color);
background-image: none;
}
/* Footer */
#footer-info li {
color: var(--txt-color);
}
#footer-info a, #footer-places a {
color: var(--url-color);
}
/* ------------------------------- */
/* Infobox */
.portable-infobox {
border: 2px solid var(--border-color);
background: none;
}
.portable-infobox .pi-title, .portable-infobox .pi-header {
background: var(--infobox-bg-color-notsolid);
}
.portable-infobox .pi-border-color {
border-color: var(--border-color);
}
/* ------------------------------- */
/* Article message box styles */
table.ambox {
box-sizing: border-box;
margin: 0 auto 2px; /* 10% = Will not overlap with other elements */
border: 1px solid var(--border-color);
/* @noflip */
border-left: 10px solid #36c; /* Default "notice" blue */
background: var(--infobox-bg-color-notsolid);
}
table.ambox + table.ambox { /* Single border between stacked boxes. */
margin-top: -1px;
}
.ambox th.mbox-text,
.ambox td.mbox-text { /* The message body cell(s) */
padding: 0.25em 0.5em; /* 0.5em left/right */
}
.ambox td.mbox-image { /* The left image cell */
/* @noflip */
padding: 2px 0 2px 0.5em; /* 0.5em left, 0px right */
}
.ambox td.mbox-imageright { /* The right image cell */
/* @noflip */
padding: 2px 0.5em 2px 0; /* 0px left, 0.5em right */
}
table.ambox-notice {
/* @noflip */
border-left: 10px solid #36c; /* Blue */
}
table.ambox-speedy {
/* @noflip */
border-left: 10px solid #b32424; /* Red */
background: #fee7e6; /* Pink */
}
table.ambox-delete {
/* @noflip */
border-left: 10px solid #b32424; /* Red */
}
table.ambox-content {
/* @noflip */
border-left: 10px solid #f28500; /* Orange */
}
table.ambox-style {
/* @noflip */
border-left: 10px solid #fc3; /* Yellow */
}
table.ambox-move {
/* @noflip */
border-left: 10px solid #9932cc; /* Purple */
}
table.ambox-protection {
/* @noflip */
border-left: 10px solid #a2a9b1; /* Gray-gold */
}
/* ------------------------------- */
/* Other pages message box styles */
table.ombox {
box-sizing: border-box;
margin: 4px 10%;
border-collapse: collapse;
border: 1px solid var(--border-color); /* Default "notice" gray */
background: var(--infobox-bg-color-notsolid);
}
table.ombox-notice {
border: 1px solid #a2a9b1; /* Gray */
}
table.ombox-speedy {
border: 2px solid #b32424; /* Red */
background: #fee7e6; /* Pink */
}
table.ombox-delete {
border: 2px solid #b32424; /* Red */
}
table.ombox-content {
border: 1px solid #f28500; /* Orange */
}
table.ombox-style {
border: 1px solid #fc3; /* Yellow */
}
table.ombox-move {
border: 1px solid #9932cc; /* Purple */
}
table.ombox-protection {
border: 2px solid #a2a9b1; /* Gray-gold */
}
2a1f05f4a12a034580b69eaa49b87f999ae52295
Template:Template link
10
29
97
53
2024-08-06T14:35:37Z
Peerkartosh
2
wikitext
text/x-wiki
{{[[Template:{{{1}}}|{{{1}}}]]}}
<noinclude>
<!-- Categories go where indicated at the bottom of this page, please; interwikis go to Wikidata (see also: [[Wikipedia:Wikidata]]). -->
The '''template link''' (or "tl") template is a simple [[w:Macro (computer science)|macro]] [[m:Help:template|template]] used to display a template name as a link surrounded by braces, thus showing the template name as code rather than actually invoking it. Its primary use is in instruction and documentation where it is used to refer to a template by name without invoking it.
==Examples==
An example of its use is:
<code><nowiki>{{tl|Example}}</nowiki></code><br>
which generates:
{{tl|Example}}
</noinclude>
2a47f514786bc039eff9a582e21ed554ff73aa0b
Shadow people
0
45
98
2024-08-07T06:52:01Z
Peerkartosh
2
Created page with "Shadow people are a species existing in the Peerverse. [[Scare]] is a notable member of it. ==Appearance== Shadow people appear humanoid, and just like humans they can have different heights and body types. All shadow people have dark, almost black skin with slight shades of magenta or blue. They also have bright yellow eyes. ==Biology== Shadow people, like the name suggests, are made out of shadows. They possess proximity-based magic that helps them hold up their physi..."
wikitext
text/x-wiki
Shadow people are a species existing in the Peerverse. [[Scare]] is a notable member of it.
==Appearance==
Shadow people appear humanoid, and just like humans they can have different heights and body types.
All shadow people have dark, almost black skin with slight shades of magenta or blue. They also have bright yellow eyes.
==Biology==
Shadow people, like the name suggests, are made out of shadows. They possess proximity-based magic that helps them hold up their physical form. The further they are from their home, the weaker their magic becomes. Though they have settlements in different corners of the galaxy, helping each other maintain magic abilities during prolonged travel. If their magic stays weak for too long, shadow people start feeling fatigued. Additionally, any kind of sunburn will become deadly to them.
Shadow people have the ability to shapeshift, though deliberate shapeshifting is rarely seen as it requires a lot of mental fortitude to perform and maintain. Instead, shapeshifting tends to manifest involuntarily due strong sensations. They can shapeshift into all three states of matter depending on how they feel - for example, a tired or overwhelmed shadow person might start melting.
They have doll-like anatomy and reproduce asexually. Some of them, however, are allosexual and might seek out intimacy.
==Culture and history==
Shadow people have existed since the beginning of time. They witnessed the many metamorphoses of the universe and documented them all in writing, amassing a peerless literary heritage. Scribes would often translate literature from other languages as well. To this day, librarians and transcribers are revered among their kind, and many shadow people have an interest in history or literature.
Contrary to their grim appearance, the species is non-confrontational. By and large, they stayed in the shadows and observed other nations throughout history.
[[Category: Species]]
5be483eb383b29b37f83e611bc399f15aa9b14ac
Category:Species
14
46
100
2024-08-07T07:04:41Z
Peerkartosh
2
Created page with "This category includes pages with information on the species in the Peerverse."
wikitext
text/x-wiki
This category includes pages with information on the species in the Peerverse.
684067d4e301146aa1326224db6fa321c228c005
Template:Mbox
10
35
101
66
2024-08-07T07:10:06Z
Peerkartosh
2
wikitext
text/x-wiki
<includeonly>
{{#invoke:Message box|mbox}}
</includeonly>
<noinclude>
You may want to use [[Template:Ambox]] or [[Template:MessageBox]] instead, which have fewer features but are easier to export.
{{tl|mbox}} stands for '''m'''essage '''box''', which is a metatemplate used to build message boxes for other templates. It offers several different colours, images and some other features.
==Basic usage==
The box below shows the most common parameters that are accepted by {{Tl|mbox}}. The purpose of each is described below.
<pre style="overflow:auto;">
{{mbox
| name =
| small = {{{small|}}}
| type =
| image =
| sect = {{{1|}}}
| issue =
| talk = {{{talk|}}}
| fix =
| date = {{{date|}}}
| cat =
| all =
}}
</pre>
==Full usage==
The "All parameters" box shows all possible parameters for this template. However, it is not recommended to copy this, because it will never be required to use all parameters simultaneously.
{| class="wikitable" align="left" style="background:transparent; width=30%;"
!All parameters
|-
|<pre style="font-size:100%">
{{mbox
| name =
| small = {{{small|}}}
| type =
| image =
| imageright =
| smallimage =
| smallimageright =
| class =
| style =
| textstyle =
| sect = {{{1|}}}
| issue =
| talk = {{{talk|}}}
| fix =
| date = {{{date|}}}
| text =
| smalltext =
| plainlinks = no
| removalnotice =
| cat =
| all =
| cat2 =
| all2 =
| cat3 =
| all3 =
}}
</pre>
|}
{{clear}}
==Common parameters==
=== ''name'' ===
The ''name'' parameter specifies the name of the template, without the Template namespace prefix. For example [[w:Template:Underlinked]] specifies {{Para|name|Underlinked}}.
This parameter should be updated if the template is ever moved. The purpose of this parameter is to allow the template to have a more useful display on its template page, for example to show the date even when not specified, and to apply categorisation of the template itself.
=== ''small'' ===
The ''small'' parameter should be passed through the template, as this will allow editors to use the small format by specifying {{para|small|left}} on an article:
{{mbox|nocat=true|small=left|text=This is the small left-aligned mbox format.}}
Otherwise the standard format will be produced:
{{mbox|nocat=true|text=This is the standard mbox format.}}
Other variations:
* For templates which should ''never'' be small, specify {{Para|small|no}} or do not pass the small parameter at all.
* For templates which should ''always'' be small, just specify {{Para|small|left}}.
* For templates which should ''default to small'', try {{para|small|<nowiki>{{{small|left}}}</nowiki>}}. This will allow an editor to override by using {{para|small|no}} on an article.
To use a small box that adjusts its width to match the text, use {{para|style|width: auto; margin-right: 0px;}} and {{para|textstyle|width: auto;}} together:
{{mbox|nocat=true|small=left|style=width: auto; margin-right: 0px;|textstyle=width: auto; margin-right: 0px;|text=This is the small left-aligned Ambox format with flexible width.}}
See [[#Sect]] below for more information on how to limit {{para|small}} display to cases when the template is being used for a section instead of the whole article (recommended, to prevent inconsistent top-of-article display).
=== ''type'' ===
The ''type'' parameter defines the colour of the left bar, and the image that is used by default. The type is chosen not on aesthetics but is based on the type of issue that the template describes. The seven available types and their default images are shown below.
{{mbox
|nocat=true
| type = speedy
| text = type=<u>speedy</u> – Speedy deletion issues
}}
{{mbox
|nocat=true
| type = delete
| text = type=<u>delete</u> – Deletion issues,
}}
{{mbox
|nocat=true
| type = content
| text = type=<u>content</u> – Content issues
}}
{{mbox
|nocat=true
| type = style
| text = type=<u>style</u> – Style issues
}}
{{mbox
|nocat=true
| type = notice
| text = type=<u>notice</u> – Article notices
}}
{{mbox
|nocat=true
| type = move
| text = type=<u>move</u> – Merge, split and transwiki proposals
}}
{{mbox
|nocat=true
| type = protection
| text = type=<u>protection</u> – Protection notices,
}}
If no ''type'' parameter is given the template defaults to {{para|type|notice}}.
=== ''image'' ===
You can choose a specific image to use for the template by using the ''image'' parameter. Images are specified using the standard syntax for inserting files. Widths of 40-50px are typical.
Please note:
* If no image is specified then the default image corresponding to the ''type'' is used. (See [[#type]] above.)
* If {{para|image|none}} is specified, then no image is used and the text uses the whole message box area.
=== ''sect'' ===
Many message templates begin with the text '''This article ...''' and it is often desirable that this wording change to '''This section ...''' if the template is used on a section instead. The value of this parameter will replace the word "article". Various possibilities for use include: {{para|sect|list}}, {{para|sect|table}}, {{para|sect|"In popular culture" material}}, etc.
If using this feature, be sure to remove the first two words ("This article") from the template's text, otherwise it will be duplicated.
A common way to facilitate this functionality is to pass {{para|sect|<nowiki>{{{1|}}}</nowiki>}}. This will allow editors to type <kbd>section</kbd>, for example, as the first unnamed parameter of the template to change the wording. Another approach is to pass {{para|sect|<nowiki>{{{section|{{{sect|}}}}}}</nowiki>}} to provide a named value.
=== ''issue'' and ''fix'' ===
The ''issue'' parameter is used to describe the issue with the page. Try to keep it short and to-the-point (approximately 10-20 words).
The ''fix'' parameter contains some text which describes what should be done to improve the page. It may be longer than the text in ''issue'', but should not usually be more than two sentences.
When the template is in its small form (when using {{para|small|left}}), the ''issue'' is the only text that will be displayed. For example [[w:Template:Citation style]] defines
When used stand-alone it produces the whole text:
But when used with |small=left it displays only the issue:
=== ''talk'' ===
Some message templates include a link to the talk page, and allow an editor to specify a section heading to link directly to the relevant section. To achieve this functionality, simply pass the ''talk'' parameter through, i.e. talk=<nowiki>{{{talk|}}}</nowiki>
This parameter may then be used by an editor as follows:
* talk=SECTION HEADING – the link will point to the specified section on the article's talk page, e.g. talk=Foo.
* talk=FULL PAGE NAME – the template will link to the page specified (which may include a section anchor), e.g. talk=Talk:Banana#Foo
Notes:
* When this parameter is used by a template, the talk page link will appear on the template itself (in order to demonstrate the functionality) but this will only display on articles if the parameter is actually defined.
* In order to make sure there is always a link to the talk page, you can use |talk=<nowiki>{{{talk|#}}}</nowiki>.
* If the talk page does not exist, there will be no link, whatever the value of the parameter.
=== ''date'' ===
Passing the ''date'' parameter through to the meta-template means that the date that the article is tagged may be specified by an editor (or more commonly a bot). This will be displayed after the message in a smaller font.
Passing this parameter also enables monthly cleanup categorisation when the ''cat'' parameter is also defined.
=== ''info'' ===
This parameter is for specifying additional information. Whatever you add here will appear after the date.
=== ''cat'' ===
This parameter defines a monthly cleanup category. If |cat=CATEGORY then:
* articles will be placed in '''Category:CATEGORY from DATE''' if |date=DATE is specified.
* articles will be placed in '''Category:CATEGORY''' if the date is not specified.
For example, [[w:Template:No footnotes]] specifies |cat=Articles lacking in-text citations and so an article with the template {{Tlx|No footnotes|2=date=June 2010|SISTER=w:}} will be placed in [[w:Category:Articles lacking in-text citations from June 2010]].
The ''cat'' parameter should not be linked, nor should the prefix <code>Category:</code> be used.
=== ''all'' ===
The ''all'' parameter defines a category into which all articles should be placed.
The ''all'' parameter should not be linked, nor should the prefix <code>Category:</code> be used.
== Additional parameters ==
=== ''imageright'' ===
An image on the right side of the message box may be specified using this parameter. The syntax is the same as for the ''image'' parameter, except that the default is no image.
=== ''smallimage'' and ''smallimageright'' ===
Images for the small format box may be specified using these parameters. They will have no effect unless {{para|small|left}} is specified.
=== ''class'' ===
Custom [[w:Cascading Style Sheets|CSS]] classes to apply to the box. If adding multiple classes, they should be space-separated.
=== ''style'' and ''textstyle'' ===
Optional CSS values may be defined, without quotation marks <code>" "</code> but with the ending semicolons <code>;</code>.
* ''style'' specifies the style used by the entire message box table. This can be used to do things such as modifying the width of the box.
* ''textstyle'' relates to the text cell.
=== ''text'' and ''smalltext'' ===
Instead of specifying the ''issue'' and the ''fix'' it is possible to use the ''text'' parameter instead.
Customised text for the small format can be defined using ''smalltext''.
=== ''plainlinks'' ===
Normally on Wikipedia, external links have an arrow icon next to them, like this: [http://www.example.com Example.com]. However, in message boxes, the arrow icon is suppressed by default, like this: <span class="plainlinks">[http://www.example.com Example.com]</span>. To get the normal style of external link with the arrow icon, use {{para|plainlinks|no}}.
=== ''cat2'', ''cat3'', ''all2'', and ''all3'' ===
* ''cat2'' and ''cat3'' provide for additional monthly categories; see [[#cat]].
* ''all2'' and ''all3'' provide for additional categories into which all articles are placed, just like [[#all]].
== Technical notes ==
* If you need to use special characters in the text parameter then you need to escape them like this:
<syntaxhighlight lang="xml">
{{mbox
|nocat=true
| text = <div>
Equal sign = and a start and end brace { } work fine as they are.
But here is a pipe | and two end braces <nowiki>}}</nowiki>.
And now a pipe and end braces <nowiki>|}}</nowiki>.
</div>
}}
</syntaxhighlight>
{{mbox
|nocat=true
| text = <div>
Equal sign = and a start and end brace { } work fine as they are.
But here is a pipe | and two end braces <nowiki>}}</nowiki>.
And now a pipe and end braces <nowiki>|}}</nowiki>.
</div>
}}
* The <code><div></code> tags that surround the text in the example above are usually not needed. But if the text contains line breaks then sometimes we get weird line spacing. This especially happens when using vertical dotted lists. Then use the div tags to fix that.
* The default images for this meta-template are in png format instead of svg format. The main reason is that some older web browsers have trouble with the transparent background that MediaWiki renders for svg images. The png images here have hand optimised transparent background colour so they look good in all browsers. Note that svg icons only look somewhat bad in the old browsers, thus such hand optimisation is only worth the trouble for very widely used icons.
== TemplateData ==
<templatedata>
{
"params": {
"1": {},
"small": {
"label": "Small Mode",
"description": "The small parameter should be passed through the template, as this will allow editors to use the small format by specifying |small=left on an article.",
"type": "string",
"suggestedvalues": [
"no",
"left"
]
},
"talk": {},
"date": {},
"name": {
"label": "Template Name",
"description": "The name parameter specifies the name of the template, without the Template namespace prefix. ",
"type": "string"
},
"type": {},
"image": {},
"sect": {},
"issue": {},
"fix": {},
"info": {},
"cat": {},
"all": {},
"imageright": {},
"class": {},
"text ": {},
"plainlinks": {},
"smallimage ": {},
"smallimageright": {},
"textstyle": {},
"style ": {},
"smalltext": {},
"cat2": {},
"cat3": {},
"all2": {},
"all3": {}
},
"paramOrder": [
"name",
"small",
"type",
"image",
"sect",
"issue",
"fix",
"talk",
"date",
"1",
"info",
"cat",
"all",
"imageright",
"class",
"text ",
"plainlinks",
"smallimage ",
"smallimageright",
"textstyle",
"style ",
"smalltext",
"cat2",
"cat3",
"all2",
"all3"
]
}
</templatedata>
<includeonly>[[Category:Notice templates]]</includeonly>
</noinclude>
da25bb747b73d1b3dd08f42c54d1047f9100f4e3
102
101
2024-08-07T07:10:24Z
Peerkartosh
2
wikitext
text/x-wiki
<includeonly>
{{#invoke:Message box|mbox}}
</includeonly>
<noinclude>
You may want to use [[Template:Ambox]] or [[Template:MessageBox]] instead, which have fewer features but are easier to export.
Stands for '''m'''essage '''box''', which is a metatemplate used to build message boxes for other templates. It offers several different colours, images and some other features.
==Basic usage==
The box below shows the most common parameters that are accepted by {{Tl|mbox}}. The purpose of each is described below.
<pre style="overflow:auto;">
{{mbox
| name =
| small = {{{small|}}}
| type =
| image =
| sect = {{{1|}}}
| issue =
| talk = {{{talk|}}}
| fix =
| date = {{{date|}}}
| cat =
| all =
}}
</pre>
==Full usage==
The "All parameters" box shows all possible parameters for this template. However, it is not recommended to copy this, because it will never be required to use all parameters simultaneously.
{| class="wikitable" align="left" style="background:transparent; width=30%;"
!All parameters
|-
|<pre style="font-size:100%">
{{mbox
| name =
| small = {{{small|}}}
| type =
| image =
| imageright =
| smallimage =
| smallimageright =
| class =
| style =
| textstyle =
| sect = {{{1|}}}
| issue =
| talk = {{{talk|}}}
| fix =
| date = {{{date|}}}
| text =
| smalltext =
| plainlinks = no
| removalnotice =
| cat =
| all =
| cat2 =
| all2 =
| cat3 =
| all3 =
}}
</pre>
|}
{{clear}}
==Common parameters==
=== ''name'' ===
The ''name'' parameter specifies the name of the template, without the Template namespace prefix. For example [[w:Template:Underlinked]] specifies {{Para|name|Underlinked}}.
This parameter should be updated if the template is ever moved. The purpose of this parameter is to allow the template to have a more useful display on its template page, for example to show the date even when not specified, and to apply categorisation of the template itself.
=== ''small'' ===
The ''small'' parameter should be passed through the template, as this will allow editors to use the small format by specifying {{para|small|left}} on an article:
{{mbox|nocat=true|small=left|text=This is the small left-aligned mbox format.}}
Otherwise the standard format will be produced:
{{mbox|nocat=true|text=This is the standard mbox format.}}
Other variations:
* For templates which should ''never'' be small, specify {{Para|small|no}} or do not pass the small parameter at all.
* For templates which should ''always'' be small, just specify {{Para|small|left}}.
* For templates which should ''default to small'', try {{para|small|<nowiki>{{{small|left}}}</nowiki>}}. This will allow an editor to override by using {{para|small|no}} on an article.
To use a small box that adjusts its width to match the text, use {{para|style|width: auto; margin-right: 0px;}} and {{para|textstyle|width: auto;}} together:
{{mbox|nocat=true|small=left|style=width: auto; margin-right: 0px;|textstyle=width: auto; margin-right: 0px;|text=This is the small left-aligned Ambox format with flexible width.}}
See [[#Sect]] below for more information on how to limit {{para|small}} display to cases when the template is being used for a section instead of the whole article (recommended, to prevent inconsistent top-of-article display).
=== ''type'' ===
The ''type'' parameter defines the colour of the left bar, and the image that is used by default. The type is chosen not on aesthetics but is based on the type of issue that the template describes. The seven available types and their default images are shown below.
{{mbox
|nocat=true
| type = speedy
| text = type=<u>speedy</u> – Speedy deletion issues
}}
{{mbox
|nocat=true
| type = delete
| text = type=<u>delete</u> – Deletion issues,
}}
{{mbox
|nocat=true
| type = content
| text = type=<u>content</u> – Content issues
}}
{{mbox
|nocat=true
| type = style
| text = type=<u>style</u> – Style issues
}}
{{mbox
|nocat=true
| type = notice
| text = type=<u>notice</u> – Article notices
}}
{{mbox
|nocat=true
| type = move
| text = type=<u>move</u> – Merge, split and transwiki proposals
}}
{{mbox
|nocat=true
| type = protection
| text = type=<u>protection</u> – Protection notices,
}}
If no ''type'' parameter is given the template defaults to {{para|type|notice}}.
=== ''image'' ===
You can choose a specific image to use for the template by using the ''image'' parameter. Images are specified using the standard syntax for inserting files. Widths of 40-50px are typical.
Please note:
* If no image is specified then the default image corresponding to the ''type'' is used. (See [[#type]] above.)
* If {{para|image|none}} is specified, then no image is used and the text uses the whole message box area.
=== ''sect'' ===
Many message templates begin with the text '''This article ...''' and it is often desirable that this wording change to '''This section ...''' if the template is used on a section instead. The value of this parameter will replace the word "article". Various possibilities for use include: {{para|sect|list}}, {{para|sect|table}}, {{para|sect|"In popular culture" material}}, etc.
If using this feature, be sure to remove the first two words ("This article") from the template's text, otherwise it will be duplicated.
A common way to facilitate this functionality is to pass {{para|sect|<nowiki>{{{1|}}}</nowiki>}}. This will allow editors to type <kbd>section</kbd>, for example, as the first unnamed parameter of the template to change the wording. Another approach is to pass {{para|sect|<nowiki>{{{section|{{{sect|}}}}}}</nowiki>}} to provide a named value.
=== ''issue'' and ''fix'' ===
The ''issue'' parameter is used to describe the issue with the page. Try to keep it short and to-the-point (approximately 10-20 words).
The ''fix'' parameter contains some text which describes what should be done to improve the page. It may be longer than the text in ''issue'', but should not usually be more than two sentences.
When the template is in its small form (when using {{para|small|left}}), the ''issue'' is the only text that will be displayed. For example [[w:Template:Citation style]] defines
When used stand-alone it produces the whole text:
But when used with |small=left it displays only the issue:
=== ''talk'' ===
Some message templates include a link to the talk page, and allow an editor to specify a section heading to link directly to the relevant section. To achieve this functionality, simply pass the ''talk'' parameter through, i.e. talk=<nowiki>{{{talk|}}}</nowiki>
This parameter may then be used by an editor as follows:
* talk=SECTION HEADING – the link will point to the specified section on the article's talk page, e.g. talk=Foo.
* talk=FULL PAGE NAME – the template will link to the page specified (which may include a section anchor), e.g. talk=Talk:Banana#Foo
Notes:
* When this parameter is used by a template, the talk page link will appear on the template itself (in order to demonstrate the functionality) but this will only display on articles if the parameter is actually defined.
* In order to make sure there is always a link to the talk page, you can use |talk=<nowiki>{{{talk|#}}}</nowiki>.
* If the talk page does not exist, there will be no link, whatever the value of the parameter.
=== ''date'' ===
Passing the ''date'' parameter through to the meta-template means that the date that the article is tagged may be specified by an editor (or more commonly a bot). This will be displayed after the message in a smaller font.
Passing this parameter also enables monthly cleanup categorisation when the ''cat'' parameter is also defined.
=== ''info'' ===
This parameter is for specifying additional information. Whatever you add here will appear after the date.
=== ''cat'' ===
This parameter defines a monthly cleanup category. If |cat=CATEGORY then:
* articles will be placed in '''Category:CATEGORY from DATE''' if |date=DATE is specified.
* articles will be placed in '''Category:CATEGORY''' if the date is not specified.
For example, [[w:Template:No footnotes]] specifies |cat=Articles lacking in-text citations and so an article with the template {{Tlx|No footnotes|2=date=June 2010|SISTER=w:}} will be placed in [[w:Category:Articles lacking in-text citations from June 2010]].
The ''cat'' parameter should not be linked, nor should the prefix <code>Category:</code> be used.
=== ''all'' ===
The ''all'' parameter defines a category into which all articles should be placed.
The ''all'' parameter should not be linked, nor should the prefix <code>Category:</code> be used.
== Additional parameters ==
=== ''imageright'' ===
An image on the right side of the message box may be specified using this parameter. The syntax is the same as for the ''image'' parameter, except that the default is no image.
=== ''smallimage'' and ''smallimageright'' ===
Images for the small format box may be specified using these parameters. They will have no effect unless {{para|small|left}} is specified.
=== ''class'' ===
Custom [[w:Cascading Style Sheets|CSS]] classes to apply to the box. If adding multiple classes, they should be space-separated.
=== ''style'' and ''textstyle'' ===
Optional CSS values may be defined, without quotation marks <code>" "</code> but with the ending semicolons <code>;</code>.
* ''style'' specifies the style used by the entire message box table. This can be used to do things such as modifying the width of the box.
* ''textstyle'' relates to the text cell.
=== ''text'' and ''smalltext'' ===
Instead of specifying the ''issue'' and the ''fix'' it is possible to use the ''text'' parameter instead.
Customised text for the small format can be defined using ''smalltext''.
=== ''plainlinks'' ===
Normally on Wikipedia, external links have an arrow icon next to them, like this: [http://www.example.com Example.com]. However, in message boxes, the arrow icon is suppressed by default, like this: <span class="plainlinks">[http://www.example.com Example.com]</span>. To get the normal style of external link with the arrow icon, use {{para|plainlinks|no}}.
=== ''cat2'', ''cat3'', ''all2'', and ''all3'' ===
* ''cat2'' and ''cat3'' provide for additional monthly categories; see [[#cat]].
* ''all2'' and ''all3'' provide for additional categories into which all articles are placed, just like [[#all]].
== Technical notes ==
* If you need to use special characters in the text parameter then you need to escape them like this:
<syntaxhighlight lang="xml">
{{mbox
|nocat=true
| text = <div>
Equal sign = and a start and end brace { } work fine as they are.
But here is a pipe | and two end braces <nowiki>}}</nowiki>.
And now a pipe and end braces <nowiki>|}}</nowiki>.
</div>
}}
</syntaxhighlight>
{{mbox
|nocat=true
| text = <div>
Equal sign = and a start and end brace { } work fine as they are.
But here is a pipe | and two end braces <nowiki>}}</nowiki>.
And now a pipe and end braces <nowiki>|}}</nowiki>.
</div>
}}
* The <code><div></code> tags that surround the text in the example above are usually not needed. But if the text contains line breaks then sometimes we get weird line spacing. This especially happens when using vertical dotted lists. Then use the div tags to fix that.
* The default images for this meta-template are in png format instead of svg format. The main reason is that some older web browsers have trouble with the transparent background that MediaWiki renders for svg images. The png images here have hand optimised transparent background colour so they look good in all browsers. Note that svg icons only look somewhat bad in the old browsers, thus such hand optimisation is only worth the trouble for very widely used icons.
== TemplateData ==
<templatedata>
{
"params": {
"1": {},
"small": {
"label": "Small Mode",
"description": "The small parameter should be passed through the template, as this will allow editors to use the small format by specifying |small=left on an article.",
"type": "string",
"suggestedvalues": [
"no",
"left"
]
},
"talk": {},
"date": {},
"name": {
"label": "Template Name",
"description": "The name parameter specifies the name of the template, without the Template namespace prefix. ",
"type": "string"
},
"type": {},
"image": {},
"sect": {},
"issue": {},
"fix": {},
"info": {},
"cat": {},
"all": {},
"imageright": {},
"class": {},
"text ": {},
"plainlinks": {},
"smallimage ": {},
"smallimageright": {},
"textstyle": {},
"style ": {},
"smalltext": {},
"cat2": {},
"cat3": {},
"all2": {},
"all3": {}
},
"paramOrder": [
"name",
"small",
"type",
"image",
"sect",
"issue",
"fix",
"talk",
"date",
"1",
"info",
"cat",
"all",
"imageright",
"class",
"text ",
"plainlinks",
"smallimage ",
"smallimageright",
"textstyle",
"style ",
"smalltext",
"cat2",
"cat3",
"all2",
"all3"
]
}
</templatedata>
<includeonly>[[Category:Notice templates]]</includeonly>
</noinclude>
091d8831d00d8f1f6855a6371a62f3c27c855a76
Template:Para
10
31
103
57
2024-08-07T07:12:30Z
Peerkartosh
2
wikitext
text/x-wiki
<code class="tpl-para" style="word-break:break-word;{{SAFESUBST:<noinclude />#if:{{{plain|}}}|border: none; background-color: inherit;}} {{SAFESUBST:<noinclude />#if:{{{style|}}}|{{{style}}}}}">|{{SAFESUBST:<noinclude />#if:{{{1|}}}|{{{1}}}=}}{{{2|}}}</code>
<noinclude>
</noinclude>
87a3c0592942d0e74ef5a5454a9f24acb6bb2a54
Template:WIP
10
41
104
78
2024-08-07T07:15:59Z
Peerkartosh
2
wikitext
text/x-wiki
<includeonly>
{{ambox
| image = [[File:Peer_computer.png|80px]]
| type = content
| text =
'''Halt! This page is still a WIP!'''
The thing described in this article has lore, but it has yet to be written out. Stay patient, or help out by contributing!
}}
</includeonly>
<noinclude>
{{WIP}}
==Template info==
You can use this template when a page is still a Work in Progress. Type <code><nowiki>{{WIP}}</nowiki></code> in the very beginning of an article to use it.
[[Category: Native templates]]
</noinclude>
6d1eeddbdd553d5b7da95a6b84de71820544dbaf
Category:Native templates
14
47
106
2024-08-07T07:18:21Z
Peerkartosh
2
Created page with "These templates were made and customized specifically for this wiki."
wikitext
text/x-wiki
These templates were made and customized specifically for this wiki.
f5872d0601a0a63cd2ab3a616eb9446d598a83f9
Category:Characters
14
48
109
2024-08-07T10:52:39Z
Peerkartosh
2
Created page with "This category includes pages about the characters of the Peerverse."
wikitext
text/x-wiki
This category includes pages about the characters of the Peerverse.
f57082d44a2d43b5fa37c2db68cfe5ee5db9d3f1